diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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/impl/AppProductSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java new file mode 100644 index 0000000..236b987 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java @@ -0,0 +1,107 @@ +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.AppProductSafeMapper; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@Service +public class AppProductSafeServiceImpl extends ServiceImpl implements IAppProductSafeService { + + @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 (AppProductSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId().toString())); + 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(AppProductSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProductSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProductSafe 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()), "projectId", 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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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/impl/AppProductSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java new file mode 100644 index 0000000..236b987 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java @@ -0,0 +1,107 @@ +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.AppProductSafeMapper; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@Service +public class AppProductSafeServiceImpl extends ServiceImpl implements IAppProductSafeService { + + @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 (AppProductSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId().toString())); + 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(AppProductSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProductSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProductSafe 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()), "projectId", 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/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 4aa4faf..d7c3308 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 @@ -324,7 +324,7 @@ */ private Map getDictRole() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("appRole"); + List suilWellDict = this.dictMapper.selectByParentCode("appRole"); Map dictRoleMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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/impl/AppProductSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java new file mode 100644 index 0000000..236b987 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java @@ -0,0 +1,107 @@ +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.AppProductSafeMapper; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@Service +public class AppProductSafeServiceImpl extends ServiceImpl implements IAppProductSafeService { + + @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 (AppProductSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId().toString())); + 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(AppProductSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProductSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProductSafe 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()), "projectId", 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/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 4aa4faf..d7c3308 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 @@ -324,7 +324,7 @@ */ private Map getDictRole() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("appRole"); + List suilWellDict = this.dictMapper.selectByParentCode("appRole"); Map dictRoleMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); 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 18a1c5e..68a15cc 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 @@ -37,9 +37,11 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); + Map dictWellTypeMap =getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + wellPreAdd.setWellTypeName(dictWellTypeMap.get(wellPreAdd.getWellType())); } } preAddPage.setRecords(wellPreAddList); @@ -48,17 +50,21 @@ @Override public Object add(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(null); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + return ResponseData.error(BusinessExceptionEnum.WELL_CODE_REPEAT.getCode(), BusinessExceptionEnum.WELL_CODE_REPEAT.getMessage()); + } int addFlag = this.baseMapper.insert(wellPreAdd); if (addFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } /** - * 1、初始化待校验的数据类 - * 2、对数据进行校验 - * 3、对数据进行批量插入 + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 */ @Override public List addWellPreBatch(List results) { @@ -96,7 +102,7 @@ } //验证点位类型 Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); - if (wellTypeIsExist) { + if (!wellTypeIsExist) { list.add("第" + index[0] + "行,点位类型错误,查询不到!"); return; } else { @@ -108,10 +114,10 @@ return list; } //保存设备信息 - Boolean batchFlag=this.insertBatch(results); - if(batchFlag){ - return list; - }else { + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); } } else { @@ -122,9 +128,13 @@ @Override public Object update(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(wellPreAdd.getId()); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + throw new BusinessException(BusinessExceptionEnum.WELL_CODE_REPEAT); + } int updateFlag = this.baseMapper.updateById(wellPreAdd); if (updateFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -140,7 +150,7 @@ private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { EntityWrapper query = new EntityWrapper<>(); - query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "well_type", 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()); @@ -157,17 +167,17 @@ private WellPreImportValid prepareWellPreValid() { return WellPreImportValid.builder() .projectMap(getProjestNameMap()) - .wellCodeMap(getAllProjestNameMap()) - .dictSuiltWellMap(getDictSuiltWell()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) .build(); } /** * 获取字典类型点位类型 */ - private Map getDictSuiltWell() { + private Map getDictSluitWell() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map wellCodeMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); @@ -175,10 +185,10 @@ } //获取点位编号 - private Map getAllProjestNameMap() { - List allWellPreList = this.baseMapper.getAllWellPreList(); + private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity()) + Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) ); return wellCodeMap; } @@ -186,25 +196,36 @@ //获取项目名称 @Override public Map getProjestNameMap() { - List> projects = this.baseMapper.getProjectList(); + List> projects = this.baseMapper.getProjectList(); //由名称查询id Map projectMap = projects.stream().collect( - Collectors.toMap(e -> e.get("projectName"), - e -> e.get("projectId")) + Collectors.toMap(e -> e.get("projectName").toString(), + e -> e.get("projectId").toString(), (e1, e2) -> e1) ); return projectMap; } @Override - public Map getProjestIdMap() { - List> projects = this.baseMapper.getProjectList(); + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( - Collectors.toMap(e -> e.get("projectId"), - e -> e.get("projectName")) + Collectors.toMap(e -> String.valueOf(e.get("projectId")), + e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) ); return projectMaps; } + /** + * 获取字典类型点位类型 + */ + private Map getDictWellType() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap( Dict::getCode,Dict::getName) + ); + return dictRoleMap; + } } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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/impl/AppProductSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java new file mode 100644 index 0000000..236b987 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java @@ -0,0 +1,107 @@ +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.AppProductSafeMapper; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@Service +public class AppProductSafeServiceImpl extends ServiceImpl implements IAppProductSafeService { + + @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 (AppProductSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId().toString())); + 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(AppProductSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProductSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProductSafe 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()), "projectId", 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/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 4aa4faf..d7c3308 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 @@ -324,7 +324,7 @@ */ private Map getDictRole() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("appRole"); + List suilWellDict = this.dictMapper.selectByParentCode("appRole"); Map dictRoleMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); 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 18a1c5e..68a15cc 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 @@ -37,9 +37,11 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); + Map dictWellTypeMap =getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + wellPreAdd.setWellTypeName(dictWellTypeMap.get(wellPreAdd.getWellType())); } } preAddPage.setRecords(wellPreAddList); @@ -48,17 +50,21 @@ @Override public Object add(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(null); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + return ResponseData.error(BusinessExceptionEnum.WELL_CODE_REPEAT.getCode(), BusinessExceptionEnum.WELL_CODE_REPEAT.getMessage()); + } int addFlag = this.baseMapper.insert(wellPreAdd); if (addFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } /** - * 1、初始化待校验的数据类 - * 2、对数据进行校验 - * 3、对数据进行批量插入 + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 */ @Override public List addWellPreBatch(List results) { @@ -96,7 +102,7 @@ } //验证点位类型 Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); - if (wellTypeIsExist) { + if (!wellTypeIsExist) { list.add("第" + index[0] + "行,点位类型错误,查询不到!"); return; } else { @@ -108,10 +114,10 @@ return list; } //保存设备信息 - Boolean batchFlag=this.insertBatch(results); - if(batchFlag){ - return list; - }else { + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); } } else { @@ -122,9 +128,13 @@ @Override public Object update(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(wellPreAdd.getId()); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + throw new BusinessException(BusinessExceptionEnum.WELL_CODE_REPEAT); + } int updateFlag = this.baseMapper.updateById(wellPreAdd); if (updateFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -140,7 +150,7 @@ private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { EntityWrapper query = new EntityWrapper<>(); - query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "well_type", 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()); @@ -157,17 +167,17 @@ private WellPreImportValid prepareWellPreValid() { return WellPreImportValid.builder() .projectMap(getProjestNameMap()) - .wellCodeMap(getAllProjestNameMap()) - .dictSuiltWellMap(getDictSuiltWell()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) .build(); } /** * 获取字典类型点位类型 */ - private Map getDictSuiltWell() { + private Map getDictSluitWell() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map wellCodeMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); @@ -175,10 +185,10 @@ } //获取点位编号 - private Map getAllProjestNameMap() { - List allWellPreList = this.baseMapper.getAllWellPreList(); + private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity()) + Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) ); return wellCodeMap; } @@ -186,25 +196,36 @@ //获取项目名称 @Override public Map getProjestNameMap() { - List> projects = this.baseMapper.getProjectList(); + List> projects = this.baseMapper.getProjectList(); //由名称查询id Map projectMap = projects.stream().collect( - Collectors.toMap(e -> e.get("projectName"), - e -> e.get("projectId")) + Collectors.toMap(e -> e.get("projectName").toString(), + e -> e.get("projectId").toString(), (e1, e2) -> e1) ); return projectMap; } @Override - public Map getProjestIdMap() { - List> projects = this.baseMapper.getProjectList(); + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( - Collectors.toMap(e -> e.get("projectId"), - e -> e.get("projectName")) + Collectors.toMap(e -> String.valueOf(e.get("projectId")), + e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) ); return projectMaps; } + /** + * 获取字典类型点位类型 + */ + private Map getDictWellType() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap( Dict::getCode,Dict::getName) + ); + return dictRoleMap; + } } 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 deleted file mode 100644 index 922cbc0..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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/impl/AppProductSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java new file mode 100644 index 0000000..236b987 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java @@ -0,0 +1,107 @@ +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.AppProductSafeMapper; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@Service +public class AppProductSafeServiceImpl extends ServiceImpl implements IAppProductSafeService { + + @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 (AppProductSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId().toString())); + 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(AppProductSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProductSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProductSafe 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()), "projectId", 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/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 4aa4faf..d7c3308 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 @@ -324,7 +324,7 @@ */ private Map getDictRole() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("appRole"); + List suilWellDict = this.dictMapper.selectByParentCode("appRole"); Map dictRoleMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); 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 18a1c5e..68a15cc 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 @@ -37,9 +37,11 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); + Map dictWellTypeMap =getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + wellPreAdd.setWellTypeName(dictWellTypeMap.get(wellPreAdd.getWellType())); } } preAddPage.setRecords(wellPreAddList); @@ -48,17 +50,21 @@ @Override public Object add(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(null); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + return ResponseData.error(BusinessExceptionEnum.WELL_CODE_REPEAT.getCode(), BusinessExceptionEnum.WELL_CODE_REPEAT.getMessage()); + } int addFlag = this.baseMapper.insert(wellPreAdd); if (addFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } /** - * 1、初始化待校验的数据类 - * 2、对数据进行校验 - * 3、对数据进行批量插入 + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 */ @Override public List addWellPreBatch(List results) { @@ -96,7 +102,7 @@ } //验证点位类型 Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); - if (wellTypeIsExist) { + if (!wellTypeIsExist) { list.add("第" + index[0] + "行,点位类型错误,查询不到!"); return; } else { @@ -108,10 +114,10 @@ return list; } //保存设备信息 - Boolean batchFlag=this.insertBatch(results); - if(batchFlag){ - return list; - }else { + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); } } else { @@ -122,9 +128,13 @@ @Override public Object update(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(wellPreAdd.getId()); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + throw new BusinessException(BusinessExceptionEnum.WELL_CODE_REPEAT); + } int updateFlag = this.baseMapper.updateById(wellPreAdd); if (updateFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -140,7 +150,7 @@ private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { EntityWrapper query = new EntityWrapper<>(); - query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "well_type", 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()); @@ -157,17 +167,17 @@ private WellPreImportValid prepareWellPreValid() { return WellPreImportValid.builder() .projectMap(getProjestNameMap()) - .wellCodeMap(getAllProjestNameMap()) - .dictSuiltWellMap(getDictSuiltWell()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) .build(); } /** * 获取字典类型点位类型 */ - private Map getDictSuiltWell() { + private Map getDictSluitWell() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map wellCodeMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); @@ -175,10 +185,10 @@ } //获取点位编号 - private Map getAllProjestNameMap() { - List allWellPreList = this.baseMapper.getAllWellPreList(); + private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity()) + Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) ); return wellCodeMap; } @@ -186,25 +196,36 @@ //获取项目名称 @Override public Map getProjestNameMap() { - List> projects = this.baseMapper.getProjectList(); + List> projects = this.baseMapper.getProjectList(); //由名称查询id Map projectMap = projects.stream().collect( - Collectors.toMap(e -> e.get("projectName"), - e -> e.get("projectId")) + Collectors.toMap(e -> e.get("projectName").toString(), + e -> e.get("projectId").toString(), (e1, e2) -> e1) ); return projectMap; } @Override - public Map getProjestIdMap() { - List> projects = this.baseMapper.getProjectList(); + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( - Collectors.toMap(e -> e.get("projectId"), - e -> e.get("projectName")) + Collectors.toMap(e -> String.valueOf(e.get("projectId")), + e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) ); return projectMaps; } + /** + * 获取字典类型点位类型 + */ + private Map getDictWellType() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap( Dict::getCode,Dict::getName) + ); + return dictRoleMap; + } } 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 deleted file mode 100644 index 922cbc0..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -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 deleted file mode 100644 index c91285d..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java +++ /dev/null @@ -1,45 +0,0 @@ -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 a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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/impl/AppProductSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java new file mode 100644 index 0000000..236b987 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java @@ -0,0 +1,107 @@ +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.AppProductSafeMapper; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@Service +public class AppProductSafeServiceImpl extends ServiceImpl implements IAppProductSafeService { + + @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 (AppProductSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId().toString())); + 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(AppProductSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProductSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProductSafe 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()), "projectId", 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/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 4aa4faf..d7c3308 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 @@ -324,7 +324,7 @@ */ private Map getDictRole() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("appRole"); + List suilWellDict = this.dictMapper.selectByParentCode("appRole"); Map dictRoleMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); 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 18a1c5e..68a15cc 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 @@ -37,9 +37,11 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); + Map dictWellTypeMap =getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + wellPreAdd.setWellTypeName(dictWellTypeMap.get(wellPreAdd.getWellType())); } } preAddPage.setRecords(wellPreAddList); @@ -48,17 +50,21 @@ @Override public Object add(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(null); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + return ResponseData.error(BusinessExceptionEnum.WELL_CODE_REPEAT.getCode(), BusinessExceptionEnum.WELL_CODE_REPEAT.getMessage()); + } int addFlag = this.baseMapper.insert(wellPreAdd); if (addFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } /** - * 1、初始化待校验的数据类 - * 2、对数据进行校验 - * 3、对数据进行批量插入 + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 */ @Override public List addWellPreBatch(List results) { @@ -96,7 +102,7 @@ } //验证点位类型 Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); - if (wellTypeIsExist) { + if (!wellTypeIsExist) { list.add("第" + index[0] + "行,点位类型错误,查询不到!"); return; } else { @@ -108,10 +114,10 @@ return list; } //保存设备信息 - Boolean batchFlag=this.insertBatch(results); - if(batchFlag){ - return list; - }else { + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); } } else { @@ -122,9 +128,13 @@ @Override public Object update(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(wellPreAdd.getId()); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + throw new BusinessException(BusinessExceptionEnum.WELL_CODE_REPEAT); + } int updateFlag = this.baseMapper.updateById(wellPreAdd); if (updateFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -140,7 +150,7 @@ private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { EntityWrapper query = new EntityWrapper<>(); - query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "well_type", 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()); @@ -157,17 +167,17 @@ private WellPreImportValid prepareWellPreValid() { return WellPreImportValid.builder() .projectMap(getProjestNameMap()) - .wellCodeMap(getAllProjestNameMap()) - .dictSuiltWellMap(getDictSuiltWell()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) .build(); } /** * 获取字典类型点位类型 */ - private Map getDictSuiltWell() { + private Map getDictSluitWell() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map wellCodeMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); @@ -175,10 +185,10 @@ } //获取点位编号 - private Map getAllProjestNameMap() { - List allWellPreList = this.baseMapper.getAllWellPreList(); + private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity()) + Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) ); return wellCodeMap; } @@ -186,25 +196,36 @@ //获取项目名称 @Override public Map getProjestNameMap() { - List> projects = this.baseMapper.getProjectList(); + List> projects = this.baseMapper.getProjectList(); //由名称查询id Map projectMap = projects.stream().collect( - Collectors.toMap(e -> e.get("projectName"), - e -> e.get("projectId")) + Collectors.toMap(e -> e.get("projectName").toString(), + e -> e.get("projectId").toString(), (e1, e2) -> e1) ); return projectMap; } @Override - public Map getProjestIdMap() { - List> projects = this.baseMapper.getProjectList(); + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( - Collectors.toMap(e -> e.get("projectId"), - e -> e.get("projectName")) + Collectors.toMap(e -> String.valueOf(e.get("projectId")), + e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) ); return projectMaps; } + /** + * 获取字典类型点位类型 + */ + private Map getDictWellType() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap( Dict::getCode,Dict::getName) + ); + return dictRoleMap; + } } 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 deleted file mode 100644 index 922cbc0..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -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 deleted file mode 100644 index c91285d..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java +++ /dev/null @@ -1,45 +0,0 @@ -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-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 69c338d..da10699 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 @@ -17,6 +17,7 @@ import com.casic.missiles.modular.system.service.IProjectService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @@ -38,7 +39,6 @@ @RequestMapping("/project") public class ProjectController extends BaseController { - @Autowired private IProjectService projectService; @Autowired @@ -54,12 +54,20 @@ } /** + * 获取项目管理列表 + */ + @RequestMapping(value = "/slide/list") + @ResponseBody + public Object pullDownlist() { + return new SuccessResponseData(projectService.selectList(null)); + } + + /** * 获取项目管理分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody public Object listPage(String projectName,String projectStatus) throws Exception{ - Page page = new PageFactory().defaultPage(); page=projectService.listPage(page,projectName,projectStatus); return new SuccessResponseData(super.packForBT(page)); @@ -70,9 +78,8 @@ */ @RequestMapping(value = "/add") @ResponseBody - @BussinessLog(value = "增加项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) - public Object add(Project project) { + public Object add(@RequestBody Project project) { EntityWrapper entityWrapper = new EntityWrapper<>(); entityWrapper.eq("project_name", project.getProjectName()); projectService.delete(entityWrapper); @@ -106,7 +113,7 @@ @RequestMapping(value = "/update") @ResponseBody @BussinessLog(value = "编辑项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) - public Object update(Project project) { + public Object update(@RequestBody Project project) { projectService.updateById(project); return ResponseData.success(); } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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/impl/AppProductSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java new file mode 100644 index 0000000..236b987 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java @@ -0,0 +1,107 @@ +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.AppProductSafeMapper; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@Service +public class AppProductSafeServiceImpl extends ServiceImpl implements IAppProductSafeService { + + @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 (AppProductSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId().toString())); + 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(AppProductSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProductSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProductSafe 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()), "projectId", 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/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 4aa4faf..d7c3308 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 @@ -324,7 +324,7 @@ */ private Map getDictRole() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("appRole"); + List suilWellDict = this.dictMapper.selectByParentCode("appRole"); Map dictRoleMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); 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 18a1c5e..68a15cc 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 @@ -37,9 +37,11 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); + Map dictWellTypeMap =getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + wellPreAdd.setWellTypeName(dictWellTypeMap.get(wellPreAdd.getWellType())); } } preAddPage.setRecords(wellPreAddList); @@ -48,17 +50,21 @@ @Override public Object add(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(null); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + return ResponseData.error(BusinessExceptionEnum.WELL_CODE_REPEAT.getCode(), BusinessExceptionEnum.WELL_CODE_REPEAT.getMessage()); + } int addFlag = this.baseMapper.insert(wellPreAdd); if (addFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } /** - * 1、初始化待校验的数据类 - * 2、对数据进行校验 - * 3、对数据进行批量插入 + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 */ @Override public List addWellPreBatch(List results) { @@ -96,7 +102,7 @@ } //验证点位类型 Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); - if (wellTypeIsExist) { + if (!wellTypeIsExist) { list.add("第" + index[0] + "行,点位类型错误,查询不到!"); return; } else { @@ -108,10 +114,10 @@ return list; } //保存设备信息 - Boolean batchFlag=this.insertBatch(results); - if(batchFlag){ - return list; - }else { + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); } } else { @@ -122,9 +128,13 @@ @Override public Object update(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(wellPreAdd.getId()); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + throw new BusinessException(BusinessExceptionEnum.WELL_CODE_REPEAT); + } int updateFlag = this.baseMapper.updateById(wellPreAdd); if (updateFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -140,7 +150,7 @@ private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { EntityWrapper query = new EntityWrapper<>(); - query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "well_type", 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()); @@ -157,17 +167,17 @@ private WellPreImportValid prepareWellPreValid() { return WellPreImportValid.builder() .projectMap(getProjestNameMap()) - .wellCodeMap(getAllProjestNameMap()) - .dictSuiltWellMap(getDictSuiltWell()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) .build(); } /** * 获取字典类型点位类型 */ - private Map getDictSuiltWell() { + private Map getDictSluitWell() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map wellCodeMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); @@ -175,10 +185,10 @@ } //获取点位编号 - private Map getAllProjestNameMap() { - List allWellPreList = this.baseMapper.getAllWellPreList(); + private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity()) + Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) ); return wellCodeMap; } @@ -186,25 +196,36 @@ //获取项目名称 @Override public Map getProjestNameMap() { - List> projects = this.baseMapper.getProjectList(); + List> projects = this.baseMapper.getProjectList(); //由名称查询id Map projectMap = projects.stream().collect( - Collectors.toMap(e -> e.get("projectName"), - e -> e.get("projectId")) + Collectors.toMap(e -> e.get("projectName").toString(), + e -> e.get("projectId").toString(), (e1, e2) -> e1) ); return projectMap; } @Override - public Map getProjestIdMap() { - List> projects = this.baseMapper.getProjectList(); + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( - Collectors.toMap(e -> e.get("projectId"), - e -> e.get("projectName")) + Collectors.toMap(e -> String.valueOf(e.get("projectId")), + e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) ); return projectMaps; } + /** + * 获取字典类型点位类型 + */ + private Map getDictWellType() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap( Dict::getCode,Dict::getName) + ); + return dictRoleMap; + } } 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 deleted file mode 100644 index 922cbc0..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -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 deleted file mode 100644 index c91285d..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java +++ /dev/null @@ -1,45 +0,0 @@ -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-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 69c338d..da10699 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 @@ -17,6 +17,7 @@ import com.casic.missiles.modular.system.service.IProjectService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @@ -38,7 +39,6 @@ @RequestMapping("/project") public class ProjectController extends BaseController { - @Autowired private IProjectService projectService; @Autowired @@ -54,12 +54,20 @@ } /** + * 获取项目管理列表 + */ + @RequestMapping(value = "/slide/list") + @ResponseBody + public Object pullDownlist() { + return new SuccessResponseData(projectService.selectList(null)); + } + + /** * 获取项目管理分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody public Object listPage(String projectName,String projectStatus) throws Exception{ - Page page = new PageFactory().defaultPage(); page=projectService.listPage(page,projectName,projectStatus); return new SuccessResponseData(super.packForBT(page)); @@ -70,9 +78,8 @@ */ @RequestMapping(value = "/add") @ResponseBody - @BussinessLog(value = "增加项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) - public Object add(Project project) { + public Object add(@RequestBody Project project) { EntityWrapper entityWrapper = new EntityWrapper<>(); entityWrapper.eq("project_name", project.getProjectName()); projectService.delete(entityWrapper); @@ -106,7 +113,7 @@ @RequestMapping(value = "/update") @ResponseBody @BussinessLog(value = "编辑项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) - public Object update(Project project) { + public Object update(@RequestBody Project project) { projectService.updateById(project); return ResponseData.success(); } 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 948188a..2ed3a2d 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 @@ -37,33 +37,33 @@ public Page listPage(Page page, String projectName, String projectStatus) throws Exception { EntityWrapper query = initProjectParm(projectName, projectStatus); page = this.selectPage(page, query); + List deviceTypeDtos = deviceTypeService.selectDeviceTypeList(); + Map deviceTypeMap = deviceTypeDtos.stream().collect( + Collectors.toMap(DeviceTypeDto::getId, DeviceTypeDto::getProductName) + ); for (Project project : page.getRecords()) { //开始时间为空判断为已经执行 if (ObjectUtils.isEmpty(project.getProjectStartTime())) { - project.setProjectStatus(HAS_EXCUTE); + project.setProjectStatus(NOT_EXCUTE); //小于开始时间为空判断为未执行 - }else if(project.getProjectStartTime().compareTo(new Date())< 0){ + }else if(project.getProjectStartTime().compareTo(new Date())> 0){ project.setProjectStatus(NOT_EXCUTE); //小于结束时间为空判断为正在执行 - }else if(!ObjectUtils.isEmpty(project.getProjectEndTime()) && + }else if(ObjectUtils.isEmpty(project.getProjectEndTime()) || project.getProjectEndTime().compareTo(new Date())<0){ project.setProjectStatus(EXCUTEING); }else { project.setProjectStatus(HAS_EXCUTE); } - project.setDevTpeNames(deviceTypeTransName(project.getDevTpeIds())); + project.setDevTpeNames(deviceTypeTransName(project.getDevTpeIds(),deviceTypeMap)); } return page; } - private String deviceTypeTransName(String deviceTyps) { + private String deviceTypeTransName(String deviceTyps, Map deviceTypeMap ) { if (StringUtils.isEmpty(deviceTyps)) { return null; } - List deviceTypeDtos = deviceTypeService.selectDeviceTypeList(); - Map deviceTypeMap = deviceTypeDtos.stream().collect( - Collectors.toMap(DeviceTypeDto::getId, DeviceTypeDto::getProductName) - ); String[] deviceTypList = deviceTyps.split(","); String deviceTypeNames = ""; for (String deviceType : deviceTypList) { @@ -81,9 +81,10 @@ EntityWrapper query = new EntityWrapper<>(); query.like("project_name", projectName); if (!StringUtils.isEmpty(projectStatus) && !"0".equals(projectStatus)) { - if ("1".equals(projectStatus)) { - query.lt("project_start_time", new Date()); - } else if ("2".equals(projectStatus)) { + if (NOT_EXCUTE.equals(projectStatus)) { + query.andNew().lt("project_start_time", new Date()) + .or().isNull("project_start_time"); + } else if (EXCUTEING.equals(projectStatus)) { query.ge("project_start_time", new Date()); query.lt("project_end_time", new Date()); } else { diff --git a/casic-app/pom.xml b/casic-app/pom.xml index a85d73b..ad85283 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -22,6 +22,7 @@ casic-core ${casic.version} + com.casic casic-admin-support @@ -45,11 +46,6 @@ org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot spring-boot-starter-validation @@ -88,12 +84,6 @@ - cn.hutool - hutool-core - 5.7.2 - - - com.casic casic-admin-core ${casic.version} @@ -105,6 +95,19 @@ 3.0.0-beta3 + + org.springframework.boot + spring-boot-starter-web + 2.4.5 + provided + + + + cn.hutool + hutool-core + 5.7.2 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java new file mode 100644 index 0000000..d0c8d6e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -0,0 +1,94 @@ +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.base.response.ResponseData; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@AllArgsConstructor +@RestController +@RequestMapping("/product/safe") +public class AppProductSafeController extends BaseController { + + private final IAppProductSafeService 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(); + page= proucteSafeService.listPage(page,proucteSafeDTO); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 安全生产更新 + */ + @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 AppProductSafe 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 AppProductSafe 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/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java deleted file mode 100644 index 4647839..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java +++ /dev/null @@ -1,90 +0,0 @@ -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/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index 25a05d5..cff72a3 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 @@ -7,6 +7,7 @@ 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.core.util.ToolUtil; 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; @@ -15,8 +16,8 @@ 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.hswebframework.expands.office.excel.ExcelIO; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +26,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid;; -import java.util.List; -import java.util.Objects; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @@ -49,8 +50,8 @@ }); AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); super.getSession().setAttribute("role", appUser.getRole()); - if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { - return appUserService.bindWechatUser(appUserLoginDTO,appUser); + if (appUserService.checkPassWord(appUserLoginDTO, appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO, appUser); } else { throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); } @@ -121,12 +122,36 @@ */ @RequestMapping(value = "/batchImport") public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("手机号", "phone"); + mapper.put("密码", "password"); + mapper.put("姓名", "name"); + mapper.put("角色", "role"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, AppUser.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + AppUser appUser = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(appUser.getPhone(), appUser.getPassword())) { + results.add(appUser); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 32c676b..7932aaf 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 @@ -7,28 +7,30 @@ 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.core.util.ToolUtil; 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.hswebframework.expands.office.excel.ExcelIO; 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; +import java.io.InputStream; +import java.util.*; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends ExportController { +public class AppWellPreController extends ExportController { - private final IAppWellPreService appWellPreService; + private final IAppWellPreService appWellPreService; + /** * 预录入点位信息列表 */ @@ -38,7 +40,7 @@ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); Page page = new PageFactory().defaultPage(); - return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page, wellPreDTO))); } /** @@ -70,14 +72,37 @@ * 预录入点位信息批量导入 */ @RequestMapping(value = "/batchImport") - @ResponseBody public Object batchImport(@RequestParam("file") MultipartFile file) { + List results = new ArrayList<>(); + //设置表头与字段映射,可通过反射获取 + Map mapper = new HashMap<>(); + mapper.put("点位编号", "wellCode"); + mapper.put("点位名称", "wellName"); + mapper.put("点位类型", "wellTypeName"); + mapper.put("位置信息", "position"); + mapper.put("所属项目", "projectName"); 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)); + + try (InputStream in = file.getInputStream()) { + ExcelIO.read(in, mapper, WellPreAdd.class, (row) -> { + //仅读取第一个sheet + if (row.getSheet() == 0) { + if (row.getResult() != null) { + WellPreAdd wellPreAdd = row.getResult(); + //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行) + if (!ToolUtil.isAllEmpty(wellPreAdd.getWellCode(), wellPreAdd.getWellTypeName())) { + results.add(wellPreAdd); + } + } + } else { + row.shutdown(); + } + }); + 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); 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 new file mode 100644 index 0000000..27e9adb --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.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.AppProductSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProductSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} 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 deleted file mode 100644 index e50ba44..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -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/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index 5eb7275..75f7118 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,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -9,11 +10,8 @@ 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(); + List> getProjectList(); + + List getAllWellPreList(@Param("updateId")Long updateId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml new file mode 100644 index 0000000..338b3ab --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProductSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + 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 deleted file mode 100644 index 4f94453..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml new file mode 100644 index 0000000..3538803 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/WellPreAddMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + 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 index b2d328f..9b08c98 100644 --- 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 @@ -13,7 +13,8 @@ HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), PASSWORD_ERROR(2402,"密码验证错误"), DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), - BIND_USER_ERROR(2403," 绑定信息添加失败");; + BIND_USER_ERROR(2404," 绑定信息添加失败"), + WELL_CODE_REPEAT(2405,"点位编号创建重复,请检测"); private Integer code; 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 new file mode 100644 index 0000000..ee8428f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.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 AppProductSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date createtime; + +} 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 deleted file mode 100644 index 87cbf45..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java +++ /dev/null @@ -1,25 +0,0 @@ -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 7f4a545..e8327c5 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 @@ -3,19 +3,23 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; import java.util.Date; -@TableName("app_user") @Data +@TableName("app_user") public class AppUser { private Long id; + @NotBlank(message = "手机号不能为空") private String phone; + @NotBlank(message = "密码不能为空") private String password; + @NotBlank(message = "名字不能为空") private String name; private String projectIds; - @TableField(exist = false) + @NotBlank(message = "所属项目不能为空") private String projectNames; private String attr; @TableField("attr_alias") 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 7c0d3cb..4d84e2c 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,8 +1,12 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; @@ -19,32 +23,41 @@ @ColumnWidth(30) @HeadRowHeight(15) @ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @TableName("app_pre_add") public class WellPreAdd { private Long id; + + @ExcelProperty("点位编号") @TableField("well_code") @NotBlank(message = "点位编号不能为空") private String wellCode; + @ExcelProperty("点位名称") @TableField("well_name") - @NotBlank(message = "点位名称不能为空") private String wellName; @TableField("well_type") private String wellType; - @NotBlank(message = "点位类型名称不能为空") + @ExcelProperty("点位类型") @TableField(exist = false) + @NotBlank(message = "点位类型不能为空") private String wellTypeName; + @ExcelProperty("位置信息") @NotBlank(message = "位置信息不能为空") private String position; private String projectId; + @TableField(exist = false) - @NotBlank(message = "项目名称信息不能为空") + @ExcelProperty("所属项目") + @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/IAppProductSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java new file mode 100644 index 0000000..159cff0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProductSafeService.java @@ -0,0 +1,34 @@ +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.AppProductSafe; + +/** + * @author cz + */ +public interface IAppProductSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProductSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProductSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} 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 deleted file mode 100644 index 4b1e5d2..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -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/impl/AppProductSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java new file mode 100644 index 0000000..236b987 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProductSafeServiceImpl.java @@ -0,0 +1,107 @@ +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.AppProductSafeMapper; +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.AppProductSafe; +import com.casic.missiles.modular.app.service.IAppProductSafeService; +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; + +/** + * @author cz + */ +@Service +public class AppProductSafeServiceImpl extends ServiceImpl implements IAppProductSafeService { + + @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 (AppProductSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId().toString())); + 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(AppProductSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProductSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProductSafe 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()), "projectId", 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/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 4aa4faf..d7c3308 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 @@ -324,7 +324,7 @@ */ private Map getDictRole() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("appRole"); + List suilWellDict = this.dictMapper.selectByParentCode("appRole"); Map dictRoleMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); 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 18a1c5e..68a15cc 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 @@ -37,9 +37,11 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); + Map dictWellTypeMap =getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + wellPreAdd.setWellTypeName(dictWellTypeMap.get(wellPreAdd.getWellType())); } } preAddPage.setRecords(wellPreAddList); @@ -48,17 +50,21 @@ @Override public Object add(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(null); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + return ResponseData.error(BusinessExceptionEnum.WELL_CODE_REPEAT.getCode(), BusinessExceptionEnum.WELL_CODE_REPEAT.getMessage()); + } int addFlag = this.baseMapper.insert(wellPreAdd); if (addFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } /** - * 1、初始化待校验的数据类 - * 2、对数据进行校验 - * 3、对数据进行批量插入 + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 */ @Override public List addWellPreBatch(List results) { @@ -96,7 +102,7 @@ } //验证点位类型 Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); - if (wellTypeIsExist) { + if (!wellTypeIsExist) { list.add("第" + index[0] + "行,点位类型错误,查询不到!"); return; } else { @@ -108,10 +114,10 @@ return list; } //保存设备信息 - Boolean batchFlag=this.insertBatch(results); - if(batchFlag){ - return list; - }else { + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); } } else { @@ -122,9 +128,13 @@ @Override public Object update(WellPreAdd wellPreAdd) { + Map wellPreValidMap = getAllWellCodeMap(wellPreAdd.getId()); + if (wellPreValidMap.containsKey(wellPreAdd.getWellCode())) { + throw new BusinessException(BusinessExceptionEnum.WELL_CODE_REPEAT); + } int updateFlag = this.baseMapper.updateById(wellPreAdd); if (updateFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -140,7 +150,7 @@ private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { EntityWrapper query = new EntityWrapper<>(); - query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "well_type", 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()); @@ -157,17 +167,17 @@ private WellPreImportValid prepareWellPreValid() { return WellPreImportValid.builder() .projectMap(getProjestNameMap()) - .wellCodeMap(getAllProjestNameMap()) - .dictSuiltWellMap(getDictSuiltWell()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) .build(); } /** * 获取字典类型点位类型 */ - private Map getDictSuiltWell() { + private Map getDictSluitWell() { //获取点位编号 - List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map wellCodeMap = suilWellDict.stream().collect( Collectors.toMap(Dict::getName, Dict::getCode) ); @@ -175,10 +185,10 @@ } //获取点位编号 - private Map getAllProjestNameMap() { - List allWellPreList = this.baseMapper.getAllWellPreList(); + private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity()) + Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) ); return wellCodeMap; } @@ -186,25 +196,36 @@ //获取项目名称 @Override public Map getProjestNameMap() { - List> projects = this.baseMapper.getProjectList(); + List> projects = this.baseMapper.getProjectList(); //由名称查询id Map projectMap = projects.stream().collect( - Collectors.toMap(e -> e.get("projectName"), - e -> e.get("projectId")) + Collectors.toMap(e -> e.get("projectName").toString(), + e -> e.get("projectId").toString(), (e1, e2) -> e1) ); return projectMap; } @Override - public Map getProjestIdMap() { - List> projects = this.baseMapper.getProjectList(); + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( - Collectors.toMap(e -> e.get("projectId"), - e -> e.get("projectName")) + Collectors.toMap(e -> String.valueOf(e.get("projectId")), + e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) ); return projectMaps; } + /** + * 获取字典类型点位类型 + */ + private Map getDictWellType() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap( Dict::getCode,Dict::getName) + ); + return dictRoleMap; + } } 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 deleted file mode 100644 index 922cbc0..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -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 deleted file mode 100644 index c91285d..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java +++ /dev/null @@ -1,45 +0,0 @@ -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-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 69c338d..da10699 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 @@ -17,6 +17,7 @@ import com.casic.missiles.modular.system.service.IProjectService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @@ -38,7 +39,6 @@ @RequestMapping("/project") public class ProjectController extends BaseController { - @Autowired private IProjectService projectService; @Autowired @@ -54,12 +54,20 @@ } /** + * 获取项目管理列表 + */ + @RequestMapping(value = "/slide/list") + @ResponseBody + public Object pullDownlist() { + return new SuccessResponseData(projectService.selectList(null)); + } + + /** * 获取项目管理分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody public Object listPage(String projectName,String projectStatus) throws Exception{ - Page page = new PageFactory().defaultPage(); page=projectService.listPage(page,projectName,projectStatus); return new SuccessResponseData(super.packForBT(page)); @@ -70,9 +78,8 @@ */ @RequestMapping(value = "/add") @ResponseBody - @BussinessLog(value = "增加项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) - public Object add(Project project) { + public Object add(@RequestBody Project project) { EntityWrapper entityWrapper = new EntityWrapper<>(); entityWrapper.eq("project_name", project.getProjectName()); projectService.delete(entityWrapper); @@ -106,7 +113,7 @@ @RequestMapping(value = "/update") @ResponseBody @BussinessLog(value = "编辑项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) - public Object update(Project project) { + public Object update(@RequestBody Project project) { projectService.updateById(project); return ResponseData.success(); } 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 948188a..2ed3a2d 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 @@ -37,33 +37,33 @@ public Page listPage(Page page, String projectName, String projectStatus) throws Exception { EntityWrapper query = initProjectParm(projectName, projectStatus); page = this.selectPage(page, query); + List deviceTypeDtos = deviceTypeService.selectDeviceTypeList(); + Map deviceTypeMap = deviceTypeDtos.stream().collect( + Collectors.toMap(DeviceTypeDto::getId, DeviceTypeDto::getProductName) + ); for (Project project : page.getRecords()) { //开始时间为空判断为已经执行 if (ObjectUtils.isEmpty(project.getProjectStartTime())) { - project.setProjectStatus(HAS_EXCUTE); + project.setProjectStatus(NOT_EXCUTE); //小于开始时间为空判断为未执行 - }else if(project.getProjectStartTime().compareTo(new Date())< 0){ + }else if(project.getProjectStartTime().compareTo(new Date())> 0){ project.setProjectStatus(NOT_EXCUTE); //小于结束时间为空判断为正在执行 - }else if(!ObjectUtils.isEmpty(project.getProjectEndTime()) && + }else if(ObjectUtils.isEmpty(project.getProjectEndTime()) || project.getProjectEndTime().compareTo(new Date())<0){ project.setProjectStatus(EXCUTEING); }else { project.setProjectStatus(HAS_EXCUTE); } - project.setDevTpeNames(deviceTypeTransName(project.getDevTpeIds())); + project.setDevTpeNames(deviceTypeTransName(project.getDevTpeIds(),deviceTypeMap)); } return page; } - private String deviceTypeTransName(String deviceTyps) { + private String deviceTypeTransName(String deviceTyps, Map deviceTypeMap ) { if (StringUtils.isEmpty(deviceTyps)) { return null; } - List deviceTypeDtos = deviceTypeService.selectDeviceTypeList(); - Map deviceTypeMap = deviceTypeDtos.stream().collect( - Collectors.toMap(DeviceTypeDto::getId, DeviceTypeDto::getProductName) - ); String[] deviceTypList = deviceTyps.split(","); String deviceTypeNames = ""; for (String deviceType : deviceTypList) { @@ -81,9 +81,10 @@ EntityWrapper query = new EntityWrapper<>(); query.like("project_name", projectName); if (!StringUtils.isEmpty(projectStatus) && !"0".equals(projectStatus)) { - if ("1".equals(projectStatus)) { - query.lt("project_start_time", new Date()); - } else if ("2".equals(projectStatus)) { + if (NOT_EXCUTE.equals(projectStatus)) { + query.andNew().lt("project_start_time", new Date()) + .or().isNull("project_start_time"); + } else if (EXCUTEING.equals(projectStatus)) { query.ge("project_start_time", new Date()); query.lt("project_end_time", new Date()); } else { diff --git a/pom.xml b/pom.xml index 9135d4a..0c43994 100644 --- a/pom.xml +++ b/pom.xml @@ -172,11 +172,6 @@ cn.hutool - hutool-core - ${hutool.version} - - - cn.hutool hutool-http ${hutool.version}