Browse Source

疫苗记录增加新增修改删除操作

master
sunyuchao 3 years ago
parent
commit
7dd7cb413b
  1. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  2. 96
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/AddIcVaccineFormDTO.java
  3. 39
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java
  4. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineDao.java
  5. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVaccineService.java
  6. 92
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java
  7. 27
      epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -257,6 +257,7 @@ public enum EpmetErrorCode {
IC_MOVE_IN(8926,"居民信息中房屋信息与当前选择房屋不一致,是否更新?"), IC_MOVE_IN(8926,"居民信息中房屋信息与当前选择房屋不一致,是否更新?"),
NOT_REGEIST_RESI(8927,"未注册居民"), NOT_REGEIST_RESI(8927,"未注册居民"),
UNIT_EXIST_HOUSES_ERROR(8928,"单元下存在房屋,不可修改单元数"), UNIT_EXIST_HOUSES_ERROR(8928,"单元下存在房屋,不可修改单元数"),
IC_VACCINE(8929,"已存在相同记录,请去修改原有记录"),
MISMATCH(10086,"人员与房屋信息不匹配,请与工作人员联系。"), MISMATCH(10086,"人员与房屋信息不匹配,请与工作人员联系。"),

96
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/AddIcVaccineFormDTO.java

@ -0,0 +1,96 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @Description 核酸检测-上报核酸记录
* @Author sun
*/
@Data
public class AddIcVaccineFormDTO implements Serializable {
private static final long serialVersionUID = 9156247659994638103L;
public interface Vaccine extends CustomerClientShowGroup {
}
public interface Edit extends CustomerClientShowGroup {
}
/**
* 核酸记录Id,修改时使用
*/
@NotBlank(message = "组织Id不能为空", groups = Edit.class)
private String icVaccineId;
/**
* 当前网格所属组织Id
*/
@NotBlank(message = "组织Id不能为空", groups = Vaccine.class)
private String agencyId;
/**
* 居民端小程序的用户id数字社区的icResiUserId其他情况无值
*/
private String userId;
/**
* 数据来源居民端小程序的人resi; 数字社区的居民icresi; 导入的import;
*/
@NotBlank(message = "居民来源不能为空", groups = Vaccine.class)
private String userType;
/**
* 姓名
*/
@NotBlank(message = "姓名不能为空", groups = Vaccine.class)
private String name;
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空", groups = Vaccine.class)
private String mobile;
/**
* 身份证号
*/
@NotBlank(message = "身份证号不能为空", groups = Vaccine.class)
private String idCard;
/**
* 接种时间
*/
@NotNull(message = "接种时间不能为空", groups = Vaccine.class)
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
private Date inoculateTime;
/**
* 接种地点
*/
@NotBlank(message = "接种地点不能为空", groups = Vaccine.class)
private String inoculateAddress;
/**
* 疫苗厂家
*/
@NotBlank(message = "疫苗厂家不能为空", groups = Vaccine.class)
private String manufacturer;
/**
* 是否客户下居民(0: 1:)
*/
private String isResiUser = "0";
/**
* 通知渠道 0小程序通知1短信通知多选是数组
*/
private List<String> channel = new ArrayList<>();
/**
* 通知内容
*/
private String content = "";
//token中信息
private String customerId;
private String staffId;
private String client;
}

39
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java

@ -20,6 +20,7 @@ import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants; import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcVaccineDTO; import com.epmet.dto.IcVaccineDTO;
import com.epmet.dto.form.AddIcVaccineFormDTO;
import com.epmet.dto.form.IcVaccineFormDTO; import com.epmet.dto.form.IcVaccineFormDTO;
import com.epmet.dto.form.VaccineListFormDTO; import com.epmet.dto.form.VaccineListFormDTO;
import com.epmet.dto.result.IcVaccineListCommonExcelResultDTO; import com.epmet.dto.result.IcVaccineListCommonExcelResultDTO;
@ -237,5 +238,43 @@ public class IcVaccineController implements ResultDataResolver {
return new Result<IcVaccineDTO>().ok(icVaccineService.detail(formDTO.getVaccineId())); return new Result<IcVaccineDTO>().ok(icVaccineService.detail(formDTO.getVaccineId()));
} }
/**
* @Author sun
* @Description 疫苗疫苗接种信息新增
**/
@PostMapping("add")
public Result add(@LoginUser TokenDto tokenDto, @RequestBody AddIcVaccineFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, AddIcVaccineFormDTO.Vaccine.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
formDTO.setClient(tokenDto.getClient());
icVaccineService.add(formDTO);
return new Result();
}
/**
* @Author sun
* @Description 疫苗疫苗接种信息修改
**/
@PostMapping("edit")
public Result edit(@LoginUser TokenDto tokenDto, @RequestBody AddIcVaccineFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, AddIcVaccineFormDTO.Edit.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
icVaccineService.edit(formDTO);
return new Result();
}
/**
* @Author sun
* @Description 疫苗疫苗接种信息删除
**/
@PostMapping("del")
public Result del(@RequestBody IcVaccineFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, IcVaccineFormDTO.Detail.class);
icVaccineService.del(formDTO);
return new Result<>();
}
} }

6
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineDao.java

@ -2,6 +2,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IcNatDTO; import com.epmet.dto.IcNatDTO;
import com.epmet.dto.IcVaccineDTO;
import com.epmet.dto.form.MyNatListFormDTO; import com.epmet.dto.form.MyNatListFormDTO;
import com.epmet.dto.form.VaccineListFormDTO; import com.epmet.dto.form.VaccineListFormDTO;
import com.epmet.dto.result.IcVaccineListResultDTO; import com.epmet.dto.result.IcVaccineListResultDTO;
@ -44,7 +45,7 @@ public interface IcVaccineDao extends BaseDao<IcVaccineEntity> {
* @Author sun * @Author sun
* @Description 删除操作--物理删除业务数据 * @Description 删除操作--物理删除业务数据
**/ **/
int delById(@Param("icNatId") String icNatId); int delById(@Param("icVaccineId") String icVaccineId);
/** /**
* 插入或者更新 * 插入或者更新
@ -67,4 +68,7 @@ public interface IcVaccineDao extends BaseDao<IcVaccineEntity> {
* @return * @return
*/ */
int updateIsResiFlag(@Param("customerId") String customerId, @Param("icResiUserId") String icResiUserId); int updateIsResiFlag(@Param("customerId") String customerId, @Param("icResiUserId") String icResiUserId);
IcVaccineDTO getVaccineDTO(@Param("customerId") String customerId, @Param("icVaccineId") String icVaccineId, @Param("idCard") String idCard, @Param("inoculateTime") String inoculateTime);
} }

8
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcVaccineService.java

@ -3,6 +3,8 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IcVaccineDTO; import com.epmet.dto.IcVaccineDTO;
import com.epmet.dto.form.AddIcVaccineFormDTO;
import com.epmet.dto.form.IcVaccineFormDTO;
import com.epmet.dto.form.VaccineListFormDTO; import com.epmet.dto.form.VaccineListFormDTO;
import com.epmet.dto.result.IcVaccineListResultDTO; import com.epmet.dto.result.IcVaccineListResultDTO;
import com.epmet.dto.result.VaccineListDTO; import com.epmet.dto.result.VaccineListDTO;
@ -60,4 +62,10 @@ public interface IcVaccineService extends BaseService<IcVaccineEntity> {
* @Description 疫苗接种情况-列表点击查询详情 * @Description 疫苗接种情况-列表点击查询详情
**/ **/
IcVaccineDTO detail(String vaccineId); IcVaccineDTO detail(String vaccineId);
void add(AddIcVaccineFormDTO formDTO);
void edit(AddIcVaccineFormDTO formDTO);
void del(IcVaccineFormDTO formDTO);
} }

92
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java

@ -10,21 +10,25 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.*;
import com.epmet.constants.ImportTaskConstants; import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcResiUserDao;
import com.epmet.dao.IcVaccineDao; import com.epmet.dao.IcVaccineDao;
import com.epmet.dao.IcVaccineRelationDao; import com.epmet.dao.IcVaccineRelationDao;
import com.epmet.dto.IcNatDTO;
import com.epmet.dto.IcVaccineDTO; import com.epmet.dto.IcVaccineDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.*;
import com.epmet.dto.form.VaccineListFormDTO;
import com.epmet.dto.result.IcVaccineListResultDTO; import com.epmet.dto.result.IcVaccineListResultDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO; import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.dto.result.VaccineListDTO; import com.epmet.dto.result.VaccineListDTO;
import com.epmet.entity.IcNatEntity;
import com.epmet.entity.IcResiUserEntity; import com.epmet.entity.IcResiUserEntity;
import com.epmet.entity.IcVaccineEntity; import com.epmet.entity.IcVaccineEntity;
import com.epmet.entity.IcVaccineRelationEntity; import com.epmet.entity.IcVaccineRelationEntity;
@ -33,6 +37,7 @@ import com.epmet.excel.data.IcVaccineImportExcelData;
import com.epmet.excel.handler.IcVaccineExcelImportListener; import com.epmet.excel.handler.IcVaccineExcelImportListener;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.OssFeignClient; import com.epmet.feign.OssFeignClient;
import com.epmet.service.IcNoticeService;
import com.epmet.service.IcVaccineService; import com.epmet.service.IcVaccineService;
import com.epmet.service.UserService; import com.epmet.service.UserService;
import com.epmet.utils.ImportTaskUtils; import com.epmet.utils.ImportTaskUtils;
@ -77,6 +82,8 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
private IcResiUserDao icResiUserDao; private IcResiUserDao icResiUserDao;
@Autowired @Autowired
private UserService userService; private UserService userService;
@Autowired
private IcNoticeService icNoticeService;
/** /**
* @Author sun * @Author sun
@ -476,4 +483,85 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
return ConvertUtils.sourceToTarget(entity, IcVaccineDTO.class); return ConvertUtils.sourceToTarget(entity, IcVaccineDTO.class);
} }
@Override
public void add(AddIcVaccineFormDTO formDTO) {
//0.先根据身份证号和接种时间校验数据是否存在
IcVaccineDTO icVaccineDTO = baseDao.getVaccineDTO(formDTO.getCustomerId(), null, formDTO.getIdCard(), DateUtils.format(formDTO.getInoculateTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE));
if (null != icVaccineDTO) {
throw new RenException(EpmetErrorCode.IC_VACCINE.getCode(), EpmetErrorCode.IC_VACCINE.getMsg());
}
//1.获取所填居民所属组织缓存信息
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getAgencyId());
if (null == agencyInfo) {
throw new RenException(String.format("获取组织缓存信息失败%s", formDTO.getAgencyId()));
}
//2.新增疫苗基础信息数据
IcVaccineEntity entity = ConvertUtils.sourceToTarget(formDTO, IcVaccineEntity.class);
if (StringUtils.isNotBlank(formDTO.getUserId())) {
entity.setIsResiUser("1");
}
insert(entity);
//3.疫苗记录关系表新增与组织的关系数据
IcVaccineRelationEntity relationEntity = ConvertUtils.sourceToTarget(formDTO, IcVaccineRelationEntity.class);
relationEntity.setIcVaccineId(entity.getId());
relationEntity.setPids(StringUtils.isNotBlank(agencyInfo.getPids()) ? agencyInfo.getPids() + ":" + formDTO.getAgencyId() : formDTO.getAgencyId());
icVaccineRelationDao.insert(relationEntity);
//3.新增通知表信息
if (formDTO.getChannel().size() > NumConstant.ZERO) {
SendNoticeFormDTO dto = new SendNoticeFormDTO();
List<SendNoticeFormDTO.UserListBean> userList = new ArrayList<>();
userList.add(ConvertUtils.sourceToTarget(formDTO, SendNoticeFormDTO.UserListBean.class));
dto.setCustomerId(formDTO.getCustomerId());
dto.setUserList(userList);
dto.setChannel(formDTO.getChannel());
dto.setOrigin("1");
dto.setContent(formDTO.getContent());
dto.setStaffId(formDTO.getStaffId());
icNoticeService.sendNotice(dto);
}
}
@Override
public void edit(AddIcVaccineFormDTO formDTO) {
//0.先根据身份证号和接种时间校验除当前数据是否还存在相同数据
IcVaccineDTO icVaccineDTO = baseDao.getVaccineDTO(formDTO.getCustomerId(), formDTO.getIcVaccineId(), formDTO.getIdCard(), DateUtils.format(formDTO.getInoculateTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE));
if (null != icVaccineDTO) {
throw new RenException(EpmetErrorCode.IC_VACCINE.getCode(), EpmetErrorCode.IC_VACCINE.getMsg());
}
//1.更新核酸记录基础信息表数据
IcVaccineEntity entity = ConvertUtils.sourceToTarget(formDTO, IcVaccineEntity.class);
entity.setId(formDTO.getIcVaccineId());
if (!updateById(entity)) {
log.error(String.format("数据修改失败,核酸记录Id->%s", formDTO.getIcVaccineId()));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "疫苗接种记录信息修改失败");
}
//修改只涉及到基础信息的修改 不会修改关系数据 关系表不涉及更新
//3.新增通知表信息
if (CollectionUtils.isNotEmpty(formDTO.getChannel())) {
SendNoticeFormDTO dto = new SendNoticeFormDTO();
List<SendNoticeFormDTO.UserListBean> userList = new ArrayList<>();
userList.add(ConvertUtils.sourceToTarget(formDTO, SendNoticeFormDTO.UserListBean.class));
dto.setCustomerId(formDTO.getCustomerId());
dto.setUserList(userList);
dto.setChannel(formDTO.getChannel());
dto.setOrigin("1");
dto.setContent(formDTO.getContent());
dto.setStaffId(formDTO.getStaffId());
icNoticeService.sendNotice(dto);
}
}
@Override
public void del(IcVaccineFormDTO formDTO) {
//1.确定删除则需要删除基础数据以及所有可能存在的关系数据,物理删除业务数据
if (baseDao.delById(formDTO.getVaccineId()) < NumConstant.ONE) {
log.error(String.format("数据删除失败,疫苗接种记录Id->%s", formDTO.getVaccineId()));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "数据删除失败");
}
//关系数据删除
icVaccineRelationDao.delRelation(formDTO.getVaccineId(), null);
}
} }

27
epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml

@ -126,8 +126,33 @@
LIMIT 1 LIMIT 1
</select> </select>
<select id="getVaccineDTO" resultType="com.epmet.dto.IcVaccineDTO">
SELECT
id,
is_resi_user,
user_type,
`name`,
mobile,
id_card,
is_resi_user,
inoculate_time,
inoculate_time,
manufacturer
FROM
ic_vaccine
WHERE
del_flag = '0'
AND customer_id = #{customerId}
AND id_card = #{idCard}
AND DATE_FORMAT(inoculate_time, '%Y-%m-%d %h:%i') = DATE_FORMAT(#{inoculateTime}, '%Y-%m-%d %h:%i')
<if test='null != icVaccineId and "" != icVaccineId'>
AND id != #{icVaccineId}
</if>
LIMIT 1
</select>
<delete id="delById"> <delete id="delById">
DELETE FROM ic_nat WHERE id = #{icNatId} DELETE FROM ic_vaccine WHERE id = #{icVaccineId}
</delete> </delete>
<insert id="insertOrUpdate"> <insert id="insertOrUpdate">

Loading…
Cancel
Save