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; 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(); } } 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 = "运输人员") 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() 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; } 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; } 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); } 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; } }