From ffb7bf307d13056bcf244b949cfe2f0ff15e0001 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 12 二月 2025 14:14:19 +0800 Subject: [PATCH] Merge remote-tracking branch 'gitee/master' --- medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwTransitRouteServiceImpl.java | 13 ++++ medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java | 2 medicalWaste-system/src/main/java/com/sinata/system/service/MwTransitRouteService.java | 7 ++ medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java | 29 +++++++++ medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwCollectRecordController.java | 64 +++++++++++++++++++-- medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java | 34 +++++++++- medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppMwApplicationController.java | 15 ++++ medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java | 10 --- 8 files changed, 149 insertions(+), 25 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 index 42a86cb..c394ef1 100644 --- 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 @@ -12,6 +12,7 @@ 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.core.redis.RedisCache; import com.sinata.common.utils.SecurityUtils; import com.sinata.common.utils.StringUtils; import com.sinata.framework.web.service.SysLoginService; @@ -31,6 +32,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; @@ -72,6 +74,8 @@ private AliSmsService aliSmsService; @Resource private ISysUserService userService; + @Autowired + private RedisCache redisCache; @PostMapping("/getCode") @@ -79,11 +83,29 @@ public AjaxResult getCode(String phone) { Random random = new Random(); - + List<SysUser> list = userService.lambdaQuery().eq(SysUser::getPhonenumber, phone).list(); + if (list.isEmpty()){ + return AjaxResult.error("当前手机号没有对应用户,请联系管理员"); + } int i = 100000 + random.nextInt(900000); aliSmsService.sendLoginCode(phone, String.valueOf(i)); + redisCache.setCacheObject(String.valueOf(phone), String.valueOf(i)); return AjaxResult.success(); } + + + @PostMapping("/set/getCode") + @ApiOperation("获取验证码") + public AjaxResult setgetCode(String phone) + { + Random random = new Random(); + int i = 100000 + random.nextInt(900000); + aliSmsService.sendLoginCode(phone, String.valueOf(i)); + redisCache.setCacheObject(String.valueOf(phone), String.valueOf(i)); + return AjaxResult.success(); + } + + @Resource private WeChatUtil weChatUtil; @@ -132,7 +154,10 @@ // } List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId()); - + String string = redisCache.getCacheObject(loginBody.getUsername()).toString(); + if (!loginBody.getCode().equals(string)){ + return AjaxResult.error("验证码错误,请重试"); + } // ajax.put("menus", menus); ajax.put("userInfo", loginUser); return ajax; 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 index 2062b21..58defe4 100644 --- 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 @@ -1,11 +1,15 @@ package com.sinata.web.controller.applet; +import com.sinata.common.core.domain.AjaxResult; import com.sinata.common.core.domain.R; +import com.sinata.common.core.redis.RedisCache; +import com.sinata.common.entity.PageDTO; import com.sinata.system.domain.MwApplication; import com.sinata.system.service.MwApplicationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -13,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; +import java.util.Date; /** * <p> @@ -29,11 +34,19 @@ @RequestMapping("/applet/mwApplication") public class AppMwApplicationController { private final MwApplicationService mwApplicationService; + @Autowired + private RedisCache redisCache; @ApiOperation("提交入驻申请") @PostMapping("/set") public R pageList(@Valid @RequestBody MwApplication mwApplication) { - mwApplicationService.saveApplication(mwApplication); + String string = redisCache.getCacheObject(mwApplication.getPhone()).toString(); + if (!mwApplication.getCode().equals(string)){ + return R.fail("验证码错误,请重试"); + } + mwApplication.setAuditStatus(1); + mwApplication.setCreateTime(new Date()); + 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 index 097d264..f414bf7 100644 --- 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 @@ -3,13 +3,18 @@ import java.math.BigDecimal; import java.util.*; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson2.JSONArray; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.annotation.JsonFormat; import com.sinata.common.core.domain.R; import com.sinata.common.core.domain.entity.SysDictData; import com.sinata.common.core.domain.entity.SysUser; import com.sinata.common.entity.PageDTO; +import com.sinata.common.utils.DateUtils; import com.sinata.common.utils.SecurityUtils; +import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.*; import com.sinata.system.domain.dto.*; import com.sinata.system.domain.query.MwCollectRecordQuery; @@ -29,6 +34,7 @@ import javax.validation.Valid; import java.io.IOException; import java.time.LocalDate; +import java.util.stream.Collectors; /** * <p> @@ -59,6 +65,8 @@ private final MwStagingRoomService roomService; private final ISysDictDataService dictDataService; private final MwTransitCarService carService; + private final MwTransitCarCollectPointService mwTransitCarCollectPointService; + private final MwTransitRouteService transitRouteService; @ApiOperation(value = "新增医废记录") @@ -82,6 +90,7 @@ mwCollectRecord.setStagingRoomId(one1.getId()); mwCollectRecord.setDepartmentId(sysUser.getDepartmentId()); mwCollectRecord.setBoxTime(new Date()); + mwCollectRecord.setCollectUserId(sysUser.getUserId()); // 创建一个随机数生成器实例 Random random = new Random(); @@ -160,6 +169,32 @@ MwBox byId = boxService.getById(list.get(0).getStagingRoomId()); byId.setLink(2); boxService.updateById(byId); + + //查询当前医废收集路线 + Long departmentId = list.get(0).getDepartmentId(); + MwTransitRoute route = transitRouteService.queryRouteByDepartmentId(departmentId); + if (Objects.nonNull(route)){ + //查询当前车辆已运输路线记录 + MwTransitCarCollectPoint carCollectPoint = mwTransitCarCollectPointService.lambdaQuery().eq(MwTransitCarCollectPoint::getCarId, sysUser.getCarId()) + .eq(MwTransitCarCollectPoint::getRouteId, route.getId()) + .eq(MwTransitCarCollectPoint::getTransitDate, DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN)) + .last("LIMIT 1").one(); + List<Long> departmentIdList = new ArrayList<>(); + //如果当前收集医院不是第一家且当前收集医院未被记录 + if (Objects.nonNull(carCollectPoint) && !carCollectPoint.getPointList().contains(departmentId.toString())){ + departmentIdList = JSONArray.parseArray(carCollectPoint.getPointList(), Long.class); + departmentIdList.add(departmentId); + }else if (Objects.isNull(carCollectPoint) ){//当前医院为第一个收集的医院 + carCollectPoint = new MwTransitCarCollectPoint(); + carCollectPoint.setCarId(carCollectPoint.getCarId()); + carCollectPoint.setRouteId(route.getId()); + carCollectPoint.setTransitDate(new Date()); + departmentIdList.add(departmentId); + } + carCollectPoint.setPointList(JSONArray.toJSONString(departmentIdList)); + mwTransitCarCollectPointService.saveOrUpdate(carCollectPoint); + } + return R.ok(); } @@ -294,10 +329,22 @@ mwDisposalRecordItem.setDisposalRecordId(mwDisposalRecord.getId()); items.add(mwDisposalRecordItem); } - - - disposalRecordItemService.saveBatch(items); + MwTransitRoute route = transitRouteService.queryRouteByDepartmentId(list.get(0).getDepartmentId()); + if (Objects.nonNull(route)) { + //查询当前车辆已运输路线记录 + MwTransitCarCollectPoint carCollectPoint = mwTransitCarCollectPointService.lambdaQuery().eq(MwTransitCarCollectPoint::getCarId, sysUser.getCarId()) + .eq(MwTransitCarCollectPoint::getRouteId, route.getId()) + .eq(MwTransitCarCollectPoint::getTransitDate, DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN)) + .last("LIMIT 1").one(); + List<Long> departmentIdList = new ArrayList<>(); + if (Objects.nonNull(carCollectPoint)) { + departmentIdList = JSONArray.parseArray(carCollectPoint.getPointList(), Long.class); + departmentIdList.add(byId.getId()); + carCollectPoint.setPointList(JSONArray.toJSONString(departmentIdList)); + mwTransitCarCollectPointService.updateById(carCollectPoint); + } + } return R.ok(); } @@ -327,6 +374,11 @@ mwDisposalHandleRecord.setDriverId(list.get(0).getDriverId()); mwDisposalHandleRecord.setCarId(list.get(0).getCarId()); disposalHandleRecordService.save(mwDisposalHandleRecord); + List<Long> collectIdList = list.stream().map(MwCollectRecord::getId).collect(Collectors.toList()); + //查询收集记录对应的接收记录 + List<MwDisposalRecordItem> disposalRecordItems = disposalRecordItemService.lambdaQuery().in(MwDisposalRecordItem::getCollectRecordId, collectIdList).list(); + Map<Long, Long> disposalRecordItemMap = disposalRecordItems.stream().collect(Collectors.toMap(MwDisposalRecordItem::getCollectRecordId, MwDisposalRecordItem::getDisposalRecordId)); + //将收集记录以及子表改变为已处置 if (!list.isEmpty()) { List<Long> ids = new ArrayList<>(); @@ -338,10 +390,11 @@ mwCollectRecord.setDisposalTime(new Date()); MwDisposalHandleRecordItem mwDisposalHandleRecordItem = new MwDisposalHandleRecordItem(); mwDisposalHandleRecordItem.setCollectRecordId(mwCollectRecord.getId()); - mwDisposalHandleRecordItem.setDisposalRecordId(mwDisposalHandleRecord.getId()); + mwDisposalHandleRecordItem.setDisposalHandleRecordId(mwDisposalHandleRecord.getId()); + mwDisposalHandleRecordItem.setDisposalRecordId(disposalRecordItemMap.getOrDefault(mwCollectRecord.getId(), null)); mwDisposalHandleRecordItems.add(mwDisposalHandleRecordItem); } -// disposalHandleRecordItemService.saveBatch(mwDisposalHandleRecordItems); + disposalHandleRecordItemService.saveBatch(mwDisposalHandleRecordItems); collectRecordService.updateBatchById(list); } // //将接收记录以及子表变为已处置 @@ -382,7 +435,6 @@ //通过车辆id查询列表 List<CollectCarTotalUpDto> list = collectRecordService.carGroup(byId.getCarId(),name); return R.ok(list); - } @ApiOperation(value = "已装车列表详情",tags = "运输人员") 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 f9b99db..c1f95c3 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", "/applet/mwApplication/set", "/applet/file/upload", "/applet/sysDepartment/departmentSearchTree", "/applet/getCode", "/applet/login", "/register", "/captchaImage", "/applet/sysAgreement/get", "/applet/sysAgreement/primary/get").permitAll() + requests.antMatchers("/backend/login","/applet/mwApplication/set","/applet/file/upload","/applet/sysDepartment/departmentSearchTree","/applet/set/getCode","/applet/getCode","/applet/login", "/register", "/captchaImage", "/applet/sysAgreement/get", "/applet/sysAgreement/primary/get").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-system/src/main/java/com/sinata/system/domain/MwApplication.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java index b85043b..a1f0d18 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java @@ -1,14 +1,13 @@ package com.sinata.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; + +import java.util.Date; /** * <p> @@ -22,7 +21,7 @@ @Setter @TableName("MW_APPLICATION") @ApiModel(value = "MwApplication对象", description = "入驻申请") -public class MwApplication extends BaseModel { +public class MwApplication { private static final long serialVersionUID = 1L; @@ -84,4 +83,29 @@ @TableField("RELATION") private String relation; + /** 创建者 */ + @ApiModelProperty(value = "记录创建人,前端忽略") + private Long createBy; + + /** 创建时间 */ + @ApiModelProperty(value = "记录创建时间,前端忽略") + private Date createTime; + + /** 更新者 */ + @ApiModelProperty(value = "记录修改人,前端忽略") + @TableField(value = "update_by", fill = FieldFill.UPDATE) + private Long updateBy; + + /** 更新时间 */ + @ApiModelProperty(value = "记录修改时间,前端忽略") + @TableField(value = "update_time", fill = FieldFill.UPDATE) + private Date updateTime; + + /** 是否删除 0未删除 1已删除 */ + @TableField("del_flag") + @ApiModelProperty(value = "是否删除 0未删除 1已删除") + @TableLogic + private Integer delFlag; + + } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java index 03feada..01800ae 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java @@ -37,17 +37,7 @@ @TableField("DISPOSAL_RECORD_ID") private Long disposalRecordId; - @ApiModelProperty("是否处置 1:是 0:否") - @TableField("DISPOSAL_FLAG") - private Integer disposalFlag; - @ApiModelProperty("处置时间") - @TableField("DISPOSAL_TIME") - private Date disposalTime; - - @ApiModelProperty("处置人id") - @TableField("DISPOSAL_USER_ID") - private Long disposalUserId; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwTransitRouteService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwTransitRouteService.java index 218b173..8694dd6 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwTransitRouteService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwTransitRouteService.java @@ -54,4 +54,11 @@ * @param id */ void delete(Long id); + + /** + * 根据医院查询路线 + * @param departmentId + * @return + */ + MwTransitRoute queryRouteByDepartmentId(Long departmentId); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwTransitRouteServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwTransitRouteServiceImpl.java index 7962370..d5327f9 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwTransitRouteServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwTransitRouteServiceImpl.java @@ -146,4 +146,17 @@ mwTransitRouteCarService.lambdaUpdate().eq(MwTransitRouteCar::getRouteId, id).remove(); removeById(id); } + /** + * 根据医院查询路线 + * @param departmentId + * @return + */ + @Override + public MwTransitRoute queryRouteByDepartmentId(Long departmentId) { + MwTransitRoutePoints routePoint = mwTransitRoutePointsService.lambdaQuery().eq(MwTransitRoutePoints::getDepartmentId, departmentId).last("LIMIT 1").one(); + if (Objects.nonNull(routePoint)) { + return this.getById(routePoint.getRouteId()); + } + return null; + } } -- Gitblit v1.7.1