|
|
@ -67,6 +67,8 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf |
|
|
|
private EpidemicUserInoutRecordDao inoutRecordDao; |
|
|
|
@Resource |
|
|
|
public EpidemicReportUserInfoDao epidemicReportUserInfoDao; |
|
|
|
@Resource |
|
|
|
public EpidemicUserInfoDao epidemicUserInfoDao; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@ -341,21 +343,51 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public Result updateVaccinationInfo(VaccinationInfoDTO dto) { |
|
|
|
// 查询实际接种的次数
|
|
|
|
dto.setDose(null); |
|
|
|
|
|
|
|
int vaccinationNum = vaccinationInfoService.checkVaccination(dto).size(); |
|
|
|
|
|
|
|
public Result updateVaccinationInfo(VaccinationInfoDTO dto, boolean methodFlag) { |
|
|
|
EpidemicUserInfoDTO userInfoDTO = new EpidemicUserInfoDTO(); |
|
|
|
userInfoDTO.setIdCard(dto.getIdentityNo()); |
|
|
|
userInfoDTO.setVaccinationNum(vaccinationNum); |
|
|
|
int zero = 0; |
|
|
|
if (vaccinationNum == zero) { |
|
|
|
userInfoDTO.setVaccinationState(0); |
|
|
|
// 如果是新增和修改
|
|
|
|
if (methodFlag) { |
|
|
|
// 如果是接种完成的记录,直接插入
|
|
|
|
if (dto.getVaccinationState() == 2) { |
|
|
|
userInfoDTO.setVaccinationNum(dto.getDose()); |
|
|
|
userInfoDTO.setVaccinationState(dto.getVaccinationState()); |
|
|
|
} else { |
|
|
|
// 否则先检查是否有接种完成的记录
|
|
|
|
EpidemicUserInfoEntity completeInfo = epidemicUserInfoDao.checkCompleteInfo(dto.getId(), "2"); |
|
|
|
// 没有接种完成的记录需要继续查询最大接种剂次
|
|
|
|
if (completeInfo == null) { |
|
|
|
// 检查最大剂次
|
|
|
|
completeInfo = epidemicUserInfoDao.checkCompleteInfo(dto.getId(), null); |
|
|
|
if (completeInfo == null || completeInfo.getVaccinationNum() < dto.getDose()) { |
|
|
|
// 如果没有接种记录或者接种记录的剂次小于本次,那么更新最新的状态
|
|
|
|
userInfoDTO.setVaccinationNum(dto.getDose()); |
|
|
|
userInfoDTO.setVaccinationState(dto.getVaccinationState()); |
|
|
|
} else { |
|
|
|
// 有更大接种剂次记录,doNothing
|
|
|
|
} |
|
|
|
} else { |
|
|
|
// 有接种完成记录,doNothing
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
userInfoDTO.setVaccinationState(1); |
|
|
|
// 如果是删除操作
|
|
|
|
// 检查还有没有接种记录
|
|
|
|
int vaccinationNum = vaccinationInfoService.checkVaccination(dto).size(); |
|
|
|
if (vaccinationNum > 0) { |
|
|
|
// 如果还有接种记录那么就是接种中
|
|
|
|
// 虽然更新接种剂次为最大值-1,但实际上不一定能查到最大值-1条数据,数据不对应时需要补录
|
|
|
|
userInfoDTO.setVaccinationNum(dto.getDose() - 1); |
|
|
|
userInfoDTO.setVaccinationState(1); |
|
|
|
} else { |
|
|
|
// 如果库里没有接种记录了,直接归为未接种,数据需要补录
|
|
|
|
userInfoDTO.setVaccinationNum(0); |
|
|
|
userInfoDTO.setVaccinationState(0); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
baseDao.updateVaccinationInfo(userInfoDTO); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|