Browse Source

修改页面保存逻辑

feature/yujt_vim
zhangyuan 4 years ago
parent
commit
daab772045
  1. 12
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java
  2. 7
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java
  3. 54
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java
  4. 19
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/controller/VaccinationInfoController.java
  5. 20
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/VaccinationInfoService.java
  6. 27
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/impl/VaccinationInfoServiceImpl.java
  7. 14
      epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml

12
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java

@ -26,7 +26,7 @@ public interface EpidemicUserInfoDao extends BaseDao<EpidemicUserInfoEntity> {
/**
* 根据身份证号删除
*
* @param idCard1
* @param idCard
* @return void
* @author wk
* @date 2021-01-26 13:58
@ -98,4 +98,14 @@ public interface EpidemicUserInfoDao extends BaseDao<EpidemicUserInfoEntity> {
* @date 2021/4/30 10:06
*/
VaccinationInfoResultDTO selectDistinctInfo(Long id);
/**
* 查询有无接种完成信息
*
* @param idCard
* @return com.elink.esua.epdc.vaccine.epidemic.dto.result.VaccinationInfoResultDTO
* @author zhy
* @date 2021/4/30 10:06
*/
EpidemicUserInfoEntity checkCompleteInfo(@Param("idCard") Long idCard, @Param("vaccinationState") String vaccinationState);
}

7
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java

@ -47,11 +47,12 @@ public interface EpidemicUserInfoService extends CrudService<EpidemicUserInfoEnt
* 更新用户的接种信息
*
* @param dto
* @return io.pingyin.common.utils.Result
* @param methodFlag 新增修改true,删除false
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/4/30 15:46
* @date 2021/5/8 13:37
*/
Result updateVaccinationInfo(VaccinationInfoDTO dto);
Result updateVaccinationInfo(VaccinationInfoDTO dto, boolean methodFlag);
/**
* @return io.pingyin.common.page.PageData<io.pingyin.modules.epidemic.dto.EpidemicReportUserInfoDTO>

54
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java

@ -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();
}

19
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/controller/VaccinationInfoController.java

@ -64,13 +64,8 @@ public class VaccinationInfoController {
public Result update(@RequestBody VaccinationInfoDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
// 剂次重复校验
if (vaccinationInfoService.checkVaccination(dto).isEmpty() || vaccinationInfoService.checkVaccination(dto).get(0).getDose().equals(dto.getDose())) {
vaccinationInfoService.update(dto);
} else {
return new Result().error("接种剂次重复");
}
return new Result();
return vaccinationInfoService.updateNew(dto);
}
@DeleteMapping
@ -78,14 +73,8 @@ public class VaccinationInfoController {
public Result delete(@RequestBody Long[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
VaccinationInfoDTO dto = vaccinationInfoService.get(ids[0]);
if (vaccinationInfoService.beforeDelete(dto)) {
vaccinationInfoService.delete(ids);
epidemicUserInfoService.updateVaccinationInfo(dto);
} else {
return new Result().error("请先删除更高剂次接种记录");
}
return new Result();
return vaccinationInfoService.deleteNew(ids);
}
@GetMapping("export")

20
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/VaccinationInfoService.java

@ -47,6 +47,26 @@ public interface VaccinationInfoService extends CrudService<VaccinationInfoEntit
*/
Result saveNew(VaccinationInfoDTO dto);
/**
* 更新时增加校验
*
* @param dto
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/5/7 13:42
*/
Result updateNew(VaccinationInfoDTO dto);
/**
* 删除时增加校验
*
* @param ids
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/5/7 13:42
*/
Result deleteNew(Long[] ids);
/**
* 批量导入
*

27
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/vim/service/impl/VaccinationInfoServiceImpl.java

@ -94,19 +94,44 @@ public class VaccinationInfoServiceImpl extends BaseVimCurdServiceImpl<Vaccinati
}
@Override
@Transactional
public Result saveNew(VaccinationInfoDTO dto) {
// 剂次重复校验
if (checkVaccination(dto).isEmpty()) {
dto.setId(null);
VaccinationInfoEntity entity = ConvertUtils.sourceToTarget(dto, VaccinationInfoEntity.class);
baseDao.insert(entity);
epidemicUserInfoService.updateVaccinationInfo(dto);
epidemicUserInfoService.updateVaccinationInfo(dto, true);
} else {
return new Result().error("接种剂次重复");
}
return new Result();
}
@Override
public Result updateNew(VaccinationInfoDTO dto) {
// 剂次重复校验
if (checkVaccination(dto).isEmpty() || checkVaccination(dto).get(0).getDose().equals(dto.getDose())) {
update(dto);
} else {
return new Result().error("接种剂次重复");
}
return new Result();
}
@Override
@Transactional
public Result deleteNew(Long[] ids) {
VaccinationInfoDTO dto = get(ids[0]);
if (beforeDelete(dto)) {
delete(ids);
epidemicUserInfoService.updateVaccinationInfo(dto, false);
} else {
return new Result().error("请先删除更高剂次接种记录");
}
return new Result();
}
/**
* 批量导入
*

14
epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml

@ -358,5 +358,17 @@
AND vi.DEL_FLAG = '0'
AND ui.id = #{id}
</select>
<select id="checkCompleteInfo" resultType="com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity">
SELECT
ID,VACCINATION_NUM
FROM
epidemic_user_info
WHERE
DEL_FLAG = '0'
<if test="vaccinationState!=null and vaccinationState!=''">
AND VACCINATION_STATE = '2'
</if>
AND ID_CARD = #{idCard}
LIMIT 1
</select>
</mapper>
Loading…
Cancel
Save