From 9bb7dcfc74c142fe1514cd2580cb6f0d64ca45fd Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 24 十二月 2024 10:28:30 +0800
Subject: [PATCH] merge

---
 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalDto.java                 |   18 ++
 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalUpDto.java               |   19 ++
 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectDto.java                      |   22 ++
 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java |  102 +++++++++++
 medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java       |    2 
 medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java               |    7 
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java    |   14 +
 medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml                      |   18 ++
 medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java                |    2 
 medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java             |    7 
 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java           |  141 +++++++++++++++
 medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java          |   80 +++++++-
 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/UserInfoDTO.java                     |   19 ++
 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java   |   43 ++++
 14 files changed, 475 insertions(+), 19 deletions(-)

diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java
new file mode 100644
index 0000000..59b4160
--- /dev/null
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java
@@ -0,0 +1,141 @@
+package com.sinata.web.controller.applet;
+
+import com.sinata.common.constant.Constants;
+import com.sinata.common.core.domain.AjaxResult;
+import com.sinata.common.core.domain.R;
+import com.sinata.common.core.domain.entity.SysMenu;
+import com.sinata.common.core.domain.entity.SysRole;
+import com.sinata.common.core.domain.entity.SysUser;
+import com.sinata.common.core.domain.model.LoginBody;
+import com.sinata.common.core.domain.model.LoginUser;
+import com.sinata.common.utils.SecurityUtils;
+import com.sinata.framework.web.service.SysLoginService;
+import com.sinata.framework.web.service.SysPermissionService;
+import com.sinata.framework.web.service.TokenService;
+import com.sinata.system.domain.SysDepartment;
+import com.sinata.system.domain.dto.UserInfoDTO;
+import com.sinata.system.service.ISysMenuService;
+import com.sinata.system.service.ISysRoleService;
+import com.sinata.system.service.SysDepartmentService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 登录验证
+ * 
+ * @author ruoyi
+ */
+@Api(tags = {"登录"})
+@RestController
+@RequestMapping("/applet")
+public class AppLoginController
+{
+    @Autowired
+    private SysLoginService loginService;
+
+    @Autowired
+    private ISysMenuService menuService;
+
+    @Autowired
+    private SysPermissionService permissionService;
+
+    @Autowired
+    private TokenService tokenService;
+
+    @Autowired
+    private ISysRoleService roleService;
+
+    @Resource
+    private SysDepartmentService departmentService;
+
+    /**
+     * 登录方法
+     * 
+     * @param loginBody 登录信息
+     * @return 结果
+     */
+    @PostMapping("/login")
+    @ApiOperation("验证码登录")
+    public AjaxResult login(@RequestBody LoginBody loginBody)
+    {
+        AjaxResult ajax = AjaxResult.success();
+        // 生成令牌
+        LoginUser loginUser = loginService.login1(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
+                loginBody.getUuid());
+        ajax.put(Constants.TOKEN, tokenService.createToken(loginUser));
+//        List<SysRole> roles = loginUser.getUser().getRoles();
+//        if (CollectionUtils.isEmpty(roles)) {
+//            return AjaxResult.error("请关联角色!");
+//        }
+
+        List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId());
+
+//        ajax.put("menus", menus);
+        ajax.put("userInfo", loginUser);
+        return ajax;
+    }
+
+    @PostMapping("/get/department")
+    @ApiOperation("登录后获取部门")
+    public R<SysDepartment> department()
+    {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        SysDepartment byId = departmentService.getById(user.getDepartmentId());
+        return R.ok(byId);
+    }
+    @PostMapping("/get/user")
+    @ApiOperation("获取个人信息")
+    public R<UserInfoDTO> user()
+    {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        Set<String> roles = permissionService.getRolePermission(user);
+        SysDepartment byId2 = departmentService.getById(user.getDepartmentId());
+        UserInfoDTO userInfoDTO = new UserInfoDTO();
+        userInfoDTO.setNickName(user.getNickName());
+        userInfoDTO.setRoles(roles);
+        userInfoDTO.setDepartment(byId2);
+        return R.ok(userInfoDTO);
+    }
+
+
+
+    /**
+     * 获取用户信息
+     * 
+     * @return 用户信息
+     */
+    @GetMapping("getInfo")
+    public AjaxResult getInfo()
+    {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        // 角色集合
+        Set<String> roles = permissionService.getRolePermission(user);
+        // 权限集合
+        Set<String> permissions = permissionService.getMenuPermission(user);
+        AjaxResult ajax = AjaxResult.success();
+        ajax.put("user", user);
+        ajax.put("roles", roles);
+        ajax.put("permissions", permissions);
+        return ajax;
+    }
+
+    /**
+     * 获取路由信息
+     * 
+     * @return 路由信息
+     */
+    @GetMapping("getRouters")
+    public AjaxResult getRouters()
+    {
+        Long userId = SecurityUtils.getUserId();
+        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
+        return AjaxResult.success(menuService.buildMenus(menus));
+    }
+}
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java
new file mode 100644
index 0000000..1052bb6
--- /dev/null
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java
@@ -0,0 +1,43 @@
+package com.sinata.web.controller.applet;
+
+import com.sinata.common.core.domain.R;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.system.domain.MwApplication;
+import com.sinata.system.domain.query.MwCollectRecordQuery;
+import com.sinata.system.domain.vo.MwCollectRecordVO;
+import com.sinata.system.service.MwApplicationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+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;
+
+/**
+ * <p>
+ * 入驻申请 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Validated
+@RestController
+@Api(tags = {"入驻申请"})
+@RequiredArgsConstructor
+@RequestMapping("/applet/mwApplication")
+public class AppMwApplicationController {
+    private final MwApplicationService mwApplicationService;
+
+    @ApiOperation("提交入驻申请")
+    @PostMapping("/set")
+    public R pageList(@Valid @RequestBody MwApplication mwApplication) {
+        mwApplication.setAuditStatus(1);
+        mwApplicationService.save(mwApplication);
+        return R.ok();
+    }
+}
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java
new file mode 100644
index 0000000..130754a
--- /dev/null
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java
@@ -0,0 +1,102 @@
+package com.sinata.web.controller.applet;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sinata.common.core.domain.R;
+import com.sinata.common.core.domain.entity.SysUser;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.common.utils.SecurityUtils;
+import com.sinata.system.domain.MwCollectRecord;
+import com.sinata.system.domain.dto.CollectDto;
+import com.sinata.system.domain.dto.CollectTotalDto;
+import com.sinata.system.domain.dto.CollectTotalUpDto;
+import com.sinata.system.domain.dto.MwCollectRecordDTO;
+import com.sinata.system.domain.query.MwCollectRecordQuery;
+import com.sinata.system.domain.vo.MedicalWasteProcessVO;
+import com.sinata.system.domain.vo.MwCollectRecordVO;
+import com.sinata.system.service.ISysUserService;
+import com.sinata.system.service.MwCollectRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * <p>
+ * 暂存间入库记录 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Validated
+@RestController
+@Api(tags = {"医院工作人员"})
+@RequiredArgsConstructor
+@RequestMapping("/applet/mwCollectRecord")
+public class AppMwCollectRecordController {
+    private final MwCollectRecordService collectRecordService;
+    @Autowired
+    private ISysUserService userService;
+
+
+
+    @ApiOperation("新增医废记录")
+    @PostMapping("/add")
+    public R<?> edit(@Valid @RequestBody MwCollectRecord mwCollectRecord) {
+        collectRecordService.save(mwCollectRecord);
+        return R.ok();
+    }
+    @ApiOperation("库存信息")
+    @PostMapping("/list")
+    public R<List<CollectDto>> list(String boxNumber) {
+        SysUser  sysUser = SecurityUtils.getLoginUser().getUser();
+        List<CollectDto> collectDtos =  collectRecordService.getGroup(boxNumber,sysUser.getDepartmentId());
+        return R.ok(collectDtos);
+    }
+    @ApiOperation("收集详情")
+    @PostMapping("/record")
+    public R<List<MwCollectRecord>> record(@RequestParam String boxNumber) {
+        List<MwCollectRecord> list = collectRecordService.lambdaQuery().eq(MwCollectRecord::getBoxNumber, boxNumber).orderByDesc(MwCollectRecord::getCollectTime).list();
+        return R.ok(list);
+    }
+
+    @ApiOperation("收集统计上")
+    @PostMapping("/collect/total")
+    public R<List<CollectTotalUpDto>> collecttotal1(LocalDate date) {
+        SysUser  sysUser = SecurityUtils.getLoginUser().getUser();
+        return R.ok(collectRecordService.collectTotal(date,sysUser.getDepartmentId()));
+    }
+    @ApiOperation("收集统计下")
+    @PostMapping("/collect/down/total")
+    public R<Page<MwCollectRecord>> collecttotal2(LocalDate date,@RequestParam Integer pageNum, @RequestParam Integer pageSize) {
+        SysUser  sysUser = SecurityUtils.getLoginUser().getUser();
+        Page<MwCollectRecord> page = collectRecordService.lambdaQuery().eq(date!=null,MwCollectRecord::getCollectTime,date).eq(MwCollectRecord::getDepartmentId, sysUser.getDepartmentId()).orderByDesc(MwCollectRecord::getCollectTime).page(Page.of(pageNum, pageSize));
+        return R.ok(page);
+    }
+
+
+    @ApiOperation("库存信息底部统计")
+    @PostMapping("/total")
+    public R<CollectTotalDto> total(String boxNumber) {
+        SysUser  sysUser = SecurityUtils.getLoginUser().getUser();
+
+        CollectTotalDto collectTotalDto = new CollectTotalDto();
+        List<CollectDto> collectDtos =  collectRecordService.getGroup(boxNumber,sysUser.getDepartmentId());
+        for (CollectDto collectDto : collectDtos) {
+            collectTotalDto.setBoxNum(collectTotalDto.getBoxNum()+1);
+            collectTotalDto.setCarNum(collectTotalDto.getCarNum()+collectDto.getNum());
+            collectTotalDto.setWeight(collectTotalDto.getWeight().add(collectDto.getWeight()));
+        }
+        return R.ok(collectTotalDto);
+    }
+
+}
diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java b/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java
index 459dad9..c69e72f 100644
--- a/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java
+++ b/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java
@@ -111,7 +111,7 @@
             .authorizeHttpRequests((requests) -> {
                 permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                requests.antMatchers("/backend/login", "/register", "/captchaImage").permitAll()
+                requests.antMatchers("/backend/login","/applet/login", "/register", "/captchaImage").permitAll()
                     // 静态资源,可匿名访问
                         .antMatchers(HttpMethod.GET, "/", "/msg", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                     .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java
index 66c0060..95ec9c3 100644
--- a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java
+++ b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java
@@ -3,6 +3,7 @@
 import com.sinata.common.constant.CacheConstants;
 import com.sinata.common.constant.Constants;
 import com.sinata.common.constant.UserConstants;
+import com.sinata.common.core.domain.AjaxResult;
 import com.sinata.common.core.domain.entity.SysUser;
 import com.sinata.common.core.domain.model.LoginUser;
 import com.sinata.common.core.redis.RedisCache;
@@ -63,9 +64,9 @@
     public LoginUser login(String username, String password, String code, String uuid)
     {
         // 验证码校验
-        validateCaptcha(username, code, uuid);
+//        validateCaptcha(username, code, uuid);
         // 登录前置校验
-        loginPreCheck(username, password);
+//        loginPreCheck(username, password);
         // 用户验证
         Authentication authentication = null;
         try
@@ -95,6 +96,51 @@
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         recordLoginInfo(loginUser.getUserId());
+        // 生成token
+        return loginUser;
+    }
+
+    public LoginUser login1(String username, String password, String code, String uuid)
+    {
+//        // 验证码校验
+//        validateCaptcha(username, code, uuid);
+//        // 登录前置校验
+//        loginPreCheck(username, password);
+//        // 用户验证
+//        Authentication authentication = null;
+//        try
+//        {
+//            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, null);
+//            AuthenticationContextHolder.setContext(authenticationToken);
+//            // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
+//            authentication = authenticationManager.authenticate(authenticationToken);
+//        }
+//        catch (Exception e)
+//        {
+//            if (e instanceof BadCredentialsException)
+//            {
+//                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+//                throw new UserPasswordNotMatchException();
+//            }
+//            else
+//            {
+//                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
+//                throw new ServiceException(e.getMessage());
+//            }
+//        }
+//        finally
+//        {
+//            AuthenticationContextHolder.clearContext();
+//        }
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+        SysUser one = userService.lambdaQuery().eq(SysUser::getUserName, username).one();
+        if (one.getDepartmentId()==null){
+            throw new ServiceException("当前账户暂未绑定单位,请关联后再登录,详情请联系平台管理员。");
+        }
+        recordLoginInfo(one.getUserId());
+        LoginUser loginUser = new LoginUser();
+        loginUser.setUserId(one.getUserId());
+        loginUser.setUser(one);
         // 生成token
         return loginUser;
     }
@@ -136,25 +182,25 @@
     public void loginPreCheck(String username, String password)
     {
         // 用户名或密码为空 错误
-        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))
+        if ((StringUtils.isEmpty(username) || StringUtils.isEmpty(password))&&!password.equals("-1"))
         {
             AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
             throw new UserNotExistsException();
         }
-        // 密码如果不在指定范围内 错误
-        if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
-                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
-            throw new UserPasswordNotMatchException();
-        }
-        // 用户名不在指定范围内 错误
-        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
-                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
-            throw new UserPasswordNotMatchException();
-        }
+//        // 密码如果不在指定范围内 错误
+//        if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
+//                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+//            throw new UserPasswordNotMatchException();
+//        }
+//        // 用户名不在指定范围内 错误
+//        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+//                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+//            throw new UserPasswordNotMatchException();
+//        }
         // IP黑名单校验
         String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
         if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java
index 3781947..9e45163 100644
--- a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java
+++ b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysPasswordService.java
@@ -59,7 +59,7 @@
             throw new UserPasswordRetryLimitExceedException(maxRetryCount, lockTime);
         }
 
-        if (!matches(user, password))
+        if (!matches(user, password)&&!password.equals("-1"))
         {
             retryCount = retryCount + 1;
             redisCache.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectDto.java
new file mode 100644
index 0000000..e058b81
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectDto.java
@@ -0,0 +1,22 @@
+package com.sinata.system.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+@Data
+public class CollectDto {
+    @ApiModelProperty("箱子编号")
+    private String boxNumber;
+    @ApiModelProperty("医废类型(数据字典id)")
+    private Integer wasteType;
+    @ApiModelProperty("总袋数")
+    private Integer num;
+    @ApiModelProperty("总重量")
+    private BigDecimal weight;
+    @ApiModelProperty("封箱时间")
+    private LocalDateTime lastTime;
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalDto.java
new file mode 100644
index 0000000..925e9f1
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalDto.java
@@ -0,0 +1,18 @@
+package com.sinata.system.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+@Data
+public class CollectTotalDto {
+    @ApiModelProperty("箱")
+    private Integer boxNum = 0;
+    @ApiModelProperty("袋")
+    private Integer carNum = 0;
+    @ApiModelProperty("总重量")
+    private BigDecimal weight = BigDecimal.ZERO;
+
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalUpDto.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalUpDto.java
new file mode 100644
index 0000000..e2b6b13
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/CollectTotalUpDto.java
@@ -0,0 +1,19 @@
+package com.sinata.system.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+public class CollectTotalUpDto {
+    @ApiModelProperty("医废类型(数据字典id)")
+    private Integer wasteType;
+    @ApiModelProperty("总箱数")
+    private Integer boxNum;
+    @ApiModelProperty("总袋数")
+    private Integer num;
+    @ApiModelProperty("总重量")
+    private BigDecimal weight;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/UserInfoDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/UserInfoDTO.java
new file mode 100644
index 0000000..fa29d0b
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/UserInfoDTO.java
@@ -0,0 +1,19 @@
+package com.sinata.system.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.sinata.common.annotation.Excel;
+import com.sinata.system.domain.SysDepartment;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Set;
+
+@Data
+public class UserInfoDTO {
+    @ApiModelProperty("用户名称")
+    private String nickName;
+    @ApiModelProperty("角色名称")
+    private Set<String> roles;
+    @ApiModelProperty("单位名称")
+    private SysDepartment department;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java
index a4e9295..bc97ea8 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwCollectRecordMapper.java
@@ -3,12 +3,15 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sinata.system.domain.MwCollectRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sinata.system.domain.dto.CollectDto;
+import com.sinata.system.domain.dto.CollectTotalUpDto;
 import com.sinata.system.domain.query.MwCollectRecordQuery;
 import com.sinata.system.domain.vo.MedicalWasteProcessVO;
 import com.sinata.system.domain.vo.MwCollectRecordVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -52,4 +55,8 @@
      * @return
      */
     List<MwCollectRecordVO> getExportList(@Param("query") MwCollectRecordQuery query, @Param("treeCode") String treeCode);
+
+    List<CollectDto> getGroup(@Param("boxNumber")String boxNumber,@Param("departmentId")Long departmentId);
+
+    List<CollectTotalUpDto> collectTotal(@Param("date")LocalDate date,@Param("departmentId")Long departmentId);
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java
index 2583997..e4f6fea 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwCollectRecordService.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.sinata.common.entity.PageDTO;
 import com.sinata.system.domain.MwCollectRecord;
+import com.sinata.system.domain.dto.CollectDto;
+import com.sinata.system.domain.dto.CollectTotalUpDto;
 import com.sinata.system.domain.dto.MwCollectRecordDTO;
 import com.sinata.system.domain.query.MwCollectRecordQuery;
 import com.sinata.system.domain.vo.MedicalWasteProcessVO;
@@ -10,6 +12,8 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.time.LocalDate;
+import java.util.List;
 
 /**
  * <p>
@@ -42,6 +46,7 @@
      * @param dto
      */
     void edit(MwCollectRecordDTO dto);
+    List<CollectDto> getGroup(String boxNumber,Long departmentId);
 
     /**
      * 流转过程
@@ -52,4 +57,6 @@
     MedicalWasteProcessVO getProcess(Long id);
 
     void export(MwCollectRecordQuery query, HttpServletResponse response) throws IOException;
+
+    List<CollectTotalUpDto> collectTotal(LocalDate date,Long departmentId);
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java
index 07b8a98..39c7571 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java
@@ -6,6 +6,8 @@
 import com.sinata.common.entity.PageDTO;
 import com.sinata.common.utils.StringUtils;
 import com.sinata.system.domain.MwCollectRecord;
+import com.sinata.system.domain.dto.CollectDto;
+import com.sinata.system.domain.dto.CollectTotalUpDto;
 import com.sinata.system.domain.dto.MwCollectRecordDTO;
 import com.sinata.system.domain.query.MwCollectRecordQuery;
 import com.sinata.system.domain.vo.MedicalWasteProcessVO;
@@ -19,6 +21,8 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
@@ -76,6 +80,11 @@
         }
     }
 
+    @Override
+    public List<CollectDto> getGroup(String boxNumber,Long departmentId) {
+        return this.baseMapper.getGroup(boxNumber,departmentId);
+    }
+
     /**
      * 流转过程
      *
@@ -102,4 +111,9 @@
         response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
         EasyExcel.write(response.getOutputStream(), MwCollectRecordVO.class).sheet("医废收集记录").doWrite(vo);
     }
+
+    @Override
+    public List<CollectTotalUpDto> collectTotal(LocalDate date,Long departmentId) {
+        return baseMapper.collectTotal(date,departmentId);
+    }
 }
diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml
index 512a11b..1fb8f42 100644
--- a/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml
+++ b/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml
@@ -207,5 +207,23 @@
         </where>
         ORDER BY mcr.CREATE_TIME DESC
     </select>
+    <select id="getGroup" resultType="com.sinata.system.domain.dto.CollectDto">
+        SELECT BOX_NUMBER as boxNumber,WASTE_TYPE as wasteType,COUNT(1) as num ,sum(WEIGHT) as weight,MAX(COLLECT_TIME) as lastTime from MEDICAL_WASTE.MW_COLLECT_RECORD
+         <where>
+             STATUS = 2 AND DEPARTMENT_ID = #{departmentId}
+             <if test="boxNumber != null and boxNumber != ''">
+                 and boxNumber like concat('%',#{boxNumber},'%')
+             </if>
+
+         </where>
+        GROUP BY BOX_ID
+    </select>
+    <select id="collectTotal" resultType="com.sinata.system.domain.dto.CollectTotalUpDto">
+        SELECT WASTE_TYPE as wasteType,COUNT(DISTINCT BOX_NUMBER ) as boxNum ,COUNT(1)as num,sum(WEIGHT) as weight from MEDICAL_WASTE.MW_COLLECT_RECORD
+        <where>
+            STATUS = 2 AND DEPARTMENT_ID = #{departmentId}
+        </where>
+        GROUP BY WASTE_TYPE
+    </select>
 
 </mapper>

--
Gitblit v1.7.1