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. 52
      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 * @return void
* @author wk * @author wk
* @date 2021-01-26 13:58 * @date 2021-01-26 13:58
@ -98,4 +98,14 @@ public interface EpidemicUserInfoDao extends BaseDao<EpidemicUserInfoEntity> {
* @date 2021/4/30 10:06 * @date 2021/4/30 10:06
*/ */
VaccinationInfoResultDTO selectDistinctInfo(Long id); 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 * @param dto
* @return io.pingyin.common.utils.Result * @param methodFlag 新增修改true,删除false
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy * @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> * @return io.pingyin.common.page.PageData<io.pingyin.modules.epidemic.dto.EpidemicReportUserInfoDTO>

52
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; private EpidemicUserInoutRecordDao inoutRecordDao;
@Resource @Resource
public EpidemicReportUserInfoDao epidemicReportUserInfoDao; public EpidemicReportUserInfoDao epidemicReportUserInfoDao;
@Resource
public EpidemicUserInfoDao epidemicUserInfoDao;
@Override @Override
@ -341,21 +343,51 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf
@Override @Override
public Result updateVaccinationInfo(VaccinationInfoDTO dto) { public Result updateVaccinationInfo(VaccinationInfoDTO dto, boolean methodFlag) {
// 查询实际接种的次数
dto.setDose(null);
int vaccinationNum = vaccinationInfoService.checkVaccination(dto).size();
EpidemicUserInfoDTO userInfoDTO = new EpidemicUserInfoDTO(); EpidemicUserInfoDTO userInfoDTO = new EpidemicUserInfoDTO();
userInfoDTO.setIdCard(dto.getIdentityNo()); userInfoDTO.setIdCard(dto.getIdentityNo());
userInfoDTO.setVaccinationNum(vaccinationNum); // 如果是新增和修改
int zero = 0; if (methodFlag) {
if (vaccinationNum == zero) { // 如果是接种完成的记录,直接插入
userInfoDTO.setVaccinationState(0); 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 { } else {
// 如果是删除操作
// 检查还有没有接种记录
int vaccinationNum = vaccinationInfoService.checkVaccination(dto).size();
if (vaccinationNum > 0) {
// 如果还有接种记录那么就是接种中
// 虽然更新接种剂次为最大值-1,但实际上不一定能查到最大值-1条数据,数据不对应时需要补录
userInfoDTO.setVaccinationNum(dto.getDose() - 1);
userInfoDTO.setVaccinationState(1); userInfoDTO.setVaccinationState(1);
} else {
// 如果库里没有接种记录了,直接归为未接种,数据需要补录
userInfoDTO.setVaccinationNum(0);
userInfoDTO.setVaccinationState(0);
}
} }
baseDao.updateVaccinationInfo(userInfoDTO); baseDao.updateVaccinationInfo(userInfoDTO);
return new Result(); 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) { public Result update(@RequestBody VaccinationInfoDTO dto) {
//效验数据 //效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
// 剂次重复校验
if (vaccinationInfoService.checkVaccination(dto).isEmpty() || vaccinationInfoService.checkVaccination(dto).get(0).getDose().equals(dto.getDose())) { return vaccinationInfoService.updateNew(dto);
vaccinationInfoService.update(dto);
} else {
return new Result().error("接种剂次重复");
}
return new Result();
} }
@DeleteMapping @DeleteMapping
@ -78,14 +73,8 @@ public class VaccinationInfoController {
public Result delete(@RequestBody Long[] ids) { public Result delete(@RequestBody Long[] ids) {
//效验数据 //效验数据
AssertUtils.isArrayEmpty(ids, "id"); AssertUtils.isArrayEmpty(ids, "id");
VaccinationInfoDTO dto = vaccinationInfoService.get(ids[0]);
if (vaccinationInfoService.beforeDelete(dto)) { return vaccinationInfoService.deleteNew(ids);
vaccinationInfoService.delete(ids);
epidemicUserInfoService.updateVaccinationInfo(dto);
} else {
return new Result().error("请先删除更高剂次接种记录");
}
return new Result();
} }
@GetMapping("export") @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); 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 @Override
@Transactional
public Result saveNew(VaccinationInfoDTO dto) { public Result saveNew(VaccinationInfoDTO dto) {
// 剂次重复校验 // 剂次重复校验
if (checkVaccination(dto).isEmpty()) { if (checkVaccination(dto).isEmpty()) {
dto.setId(null); dto.setId(null);
VaccinationInfoEntity entity = ConvertUtils.sourceToTarget(dto, VaccinationInfoEntity.class); VaccinationInfoEntity entity = ConvertUtils.sourceToTarget(dto, VaccinationInfoEntity.class);
baseDao.insert(entity); 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 { } else {
return new Result().error("接种剂次重复"); return new Result().error("接种剂次重复");
} }
return new Result(); 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 vi.DEL_FLAG = '0'
AND ui.id = #{id} AND ui.id = #{id}
</select> </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> </mapper>
Loading…
Cancel
Save