diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectFormDTO.java index 21f2244129..9acd851ab3 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectFormDTO.java @@ -82,9 +82,9 @@ public class IcResiCollectFormDTO implements Serializable { private String address; /** - * 1自由0租住 + * 1自有0租住 */ - @NotBlank(message = "房子属于自由还是组织?", groups = {InternalShowGroup.class, ExternalShowGroup.class}) + @NotBlank(message = "房子属于自有还是租住?", groups = {InternalShowGroup.class, ExternalShowGroup.class}) private String houseType; /** diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java index 2dccf23b59..a3fca9b02b 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java @@ -2,6 +2,7 @@ package com.epmet.dto.form; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -17,13 +18,13 @@ public class IcResiCollectMemFormDTO implements Serializable { /** * 居住成员1姓名 */ - // @NotBlank(message = "姓名不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) + @NotBlank(message = "姓名不能为空", groups = {ResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) private String name; /** * 居住成员1身份证号 */ - // @NotBlank(message = "身份证号不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) + @NotBlank(message = "身份证号不能为空", groups = {ResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) private String idNum; /** @@ -43,4 +44,9 @@ public class IcResiCollectMemFormDTO implements Serializable { */ // @NotNull(message = "疫苗接种情况不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) private Integer ymjz; + + /** + * 社区居民信息登记-查询返参用 + */ + private String id; } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestSubmitCollectFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestSubmitCollectFormDTO.java new file mode 100644 index 0000000000..547e469085 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestSubmitCollectFormDTO.java @@ -0,0 +1,22 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 社区居民信息登记-查询 + */ +@Data +public class LatestSubmitCollectFormDTO implements Serializable { + public interface AddUserInternalGroup { + } + + @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) + private String userId; + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; + @NotBlank(message = "gridId不能为空", groups = AddUserInternalGroup.class) + private String gridId; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiCollectFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiCollectFormDTO.java new file mode 100644 index 0000000000..fdd712970f --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiCollectFormDTO.java @@ -0,0 +1,105 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 社区居民信息登记-提交 入参 + */ +@Data +public class ResiCollectFormDTO implements Serializable { + + private static final long serialVersionUID = -4026681095438180447L; + + public interface AddUserInternalGroup { + } + + public interface InternalShowGroup extends CustomerClientShowGroup { + } + + /** + * 客户Id customer.id + */ + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; + + /** + * 网格ID_后端接口赋值 + */ + @NotBlank(message = "gridId不能为空", groups = AddUserInternalGroup.class) + private String gridId; + + /** + * 组织Id_后端接口赋值 + */ + @NotBlank(message = "agencyId不能为空", groups = AddUserInternalGroup.class) + private String agencyId; + + /** + * 组织的pid_后端接口赋值 + */ + private String pids; + + /** + * 所属小区ID + */ + @NotBlank(message = "小区不能为空", groups = InternalShowGroup.class) + private String villageId; + + /** + * 所属楼宇Id + */ + @NotBlank(message = "楼栋不能为空", groups = InternalShowGroup.class) + private String buildId; + + /** + * 单元id + */ + @NotBlank(message = "单元不能为空", groups = InternalShowGroup.class) + private String unitId; + + /** + * 所属家庭Id + */ + @NotBlank(message = "家庭不能为空", groups = InternalShowGroup.class) + private String homeId; + + /** + * 详细地址 + */ + @NotBlank(message = "家庭地址不能为空", groups = {InternalShowGroup.class}) + private String address; + + /** + * 1自有0租住 + */ + @NotBlank(message = "房子属于自有还是租住?", groups = {InternalShowGroup.class}) + private String houseType; + + /** + * 户主姓名 + */ + @NotBlank(message = "户主姓名不能为空", groups = {InternalShowGroup.class}) + private String houseHolderName; + + /** + * 居住成员人数 + */ + @NotNull(message = "居住成员人数不能为空", groups = {InternalShowGroup.class}) + private Integer totalResi; + + @Valid + @NotEmpty(message = "成员信息不能为空", groups = {InternalShowGroup.class}) + private List memberList; + + @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) + private String userId; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LatestCollectResDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LatestCollectResDTO.java new file mode 100644 index 0000000000..f7d698badd --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LatestCollectResDTO.java @@ -0,0 +1,82 @@ +package com.epmet.dto.result; + +import com.epmet.dto.form.IcResiCollectMemFormDTO; +import lombok.Data; + +import javax.validation.Valid; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * 社区居民信息登记-返参 + */ +@Data +public class LatestCollectResDTO implements Serializable { + private String resiCollectId; + private String agencyId; + private String agencyName; + private String pids; + private String gridId; + private String customerId; + /** + * 所属小区ID + */ + private String villageId; + + /** + * 所属楼宇Id + */ + private String buildId; + + /** + * 单元id + */ + private String unitId; + + /** + * 所属家庭Id + */ + private String homeId; + + /** + * 详细地址 + */ + private String address; + + /** + * 1自有0租住 + */ + private String houseType; + + /** + * 户主姓名 + */ + private String houseHolderName; + + /** + * 居住成员人数 + */ + private Integer totalResi; + + @Valid + private List memberList; + + public LatestCollectResDTO() { + this.resiCollectId = ""; + this.agencyId = ""; + this.agencyName = ""; + this.pids = ""; + this.gridId = ""; + this.customerId = ""; + this.villageId = ""; + this.buildId = ""; + this.unitId=""; + this.homeId=""; + this.address=""; + this.houseType=""; + this.houseHolderName=""; + this.totalResi=0; + this.memberList=new ArrayList<>(); + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java index 7b8df6ad1d..ccf831e0aa 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java @@ -11,9 +11,12 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.CollectListFormDTO; import com.epmet.dto.form.IcResiCollectFormDTO; +import com.epmet.dto.form.LatestSubmitCollectFormDTO; +import com.epmet.dto.form.ResiCollectFormDTO; import com.epmet.dto.result.CollectListExcelResultDTO; import com.epmet.dto.result.CollectListMemberExcelResultDTO; import com.epmet.dto.result.CollectListResultDTO; +import com.epmet.dto.result.LatestCollectResDTO; import com.epmet.service.IcResiCollectService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -108,4 +111,33 @@ public class IcResiCollectController { ExcelUtils.exportExcelToTarget(response, null, list, CollectListExcelResultDTO.class); } + /** + * 居民端小程序:社区居民信息登记-提交 + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("save-resi") + public Result saveResi(@LoginUser TokenDto tokenDto, @RequestBody ResiCollectFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDTO, ResiCollectFormDTO.InternalShowGroup.class, ResiCollectFormDTO.AddUserInternalGroup.class); + icResiCollectService.saveResi(formDTO); + return new Result(); + } + + /** + * 居民端小程序:社区居民信息登记-查询 + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("latest-submit") + public Result latestSubmit(@LoginUser TokenDto tokenDto, @RequestBody LatestSubmitCollectFormDTO formDTO){ + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO,LatestSubmitCollectFormDTO.AddUserInternalGroup.class); + return new Result().ok(icResiCollectService.latestSubmit(formDTO)); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java index f70f0e04ff..2602b5858a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java @@ -23,7 +23,8 @@ public interface IcResiCollectDao extends BaseDao { int updateRec(@Param("id") String id, @Param("houseType") String houseType, @Param("houseHolderName") String houseHolderName, - @Param("totalResi") Integer totalResi); + @Param("totalResi") Integer totalResi, + @Param("updatedBy") String updatedBy); /** * Desc: 查询采集居民信息 @@ -33,4 +34,11 @@ public interface IcResiCollectDao extends BaseDao { */ List getCollectList(CollectListFormDTO formDTO); + /** + * 我上次提交的主表记录 + * @param customerId + * @param userId + * @return + */ + String selectLastSubmitId(@Param("customerId") String customerId, @Param("userId") String userId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiMemberDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiMemberDao.java index e4748e01b2..e61539e1da 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiMemberDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiMemberDao.java @@ -1,8 +1,12 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.IcResiCollectMemFormDTO; import com.epmet.entity.IcResiMemberEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 居民信息成员表 @@ -12,5 +16,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface IcResiMemberDao extends BaseDao { - + + List selectMySubmit(@Param("latestResiCollectId") String latestResiCollectId, @Param("userId")String userId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiCollectService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiCollectService.java index 4c0bca4fa5..9129b34675 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiCollectService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiCollectService.java @@ -4,11 +4,12 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.form.CollectListFormDTO; import com.epmet.dto.form.IcResiCollectFormDTO; +import com.epmet.dto.form.LatestSubmitCollectFormDTO; +import com.epmet.dto.form.ResiCollectFormDTO; import com.epmet.dto.result.CollectListResultDTO; +import com.epmet.dto.result.LatestCollectResDTO; import com.epmet.entity.IcResiCollectEntity; -import java.util.List; - /** * 居民信息采集表 * @@ -36,4 +37,16 @@ public interface IcResiCollectService extends BaseService { */ PageData getCollectList(CollectListFormDTO formDTO); + /** + * 居民端小程序:社区居民信息登记-提交 + * @param formDTO + */ + void saveResi(ResiCollectFormDTO formDTO); + + /** + * 居民端小程序:社区居民信息登记-查询 + * @param formDTO + * @return + */ + LatestCollectResDTO latestSubmit(LatestSubmitCollectFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java index b1895b608a..3343e5c4fc 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java @@ -2,26 +2,30 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; 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.bean.AgencyInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dao.IcResiCollectDao; import com.epmet.dao.IcResiMemberDao; import com.epmet.dto.IcNeighborHoodDTO; -import com.epmet.dto.form.CollectListFormDTO; -import com.epmet.dto.form.IcResiCollectFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.CollectListResultDTO; +import com.epmet.dto.result.LatestCollectResDTO; import com.epmet.entity.IcResiCollectEntity; import com.epmet.entity.IcResiMemberEntity; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.IcResiCollectService; -import org.apache.commons.collections4.MapUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -71,7 +75,7 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl newMemberList = ConvertUtils.sourceToTarget(formDTO.getMemberList(), IcResiMemberEntity.class); //查询之前录入的成员表 Map memMap = queryOriginMem(origin.getId()); @@ -145,4 +149,85 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl memberList = ConvertUtils.sourceToTarget(formDTO.getMemberList(), IcResiMemberEntity.class); + memberList.forEach(mem -> { + if (StringUtils.isNotBlank(mem.getName()) || StringUtils.isNotBlank(mem.getIdNum())) { + mem.setCustomerId(formDTO.getCustomerId()); + //姓名或份身份证号不为空时插入 + mem.setIcResiCollectId(insert.getId()); + icResiMemberDao.insert(mem); + } + }); + } else { + //更新主表 + baseDao.updateRec(origin.getId(), formDTO.getHouseType(), formDTO.getHouseHolderName(), formDTO.getTotalResi(),formDTO.getUserId()); + List newMemberList = ConvertUtils.sourceToTarget(formDTO.getMemberList(), IcResiMemberEntity.class); + //查询之前录入的成员表 + Map memMap = queryOriginMem(origin.getId()); + saveOrUpdateMem(newMemberList, memMap,origin.getId()); + } + } + + /** + * 居民端小程序:社区居民信息登记-查询 + * + * @param formDTO + * @return + */ + @Override + public LatestCollectResDTO latestSubmit(LatestSubmitCollectFormDTO formDTO) { + //张三、李四都住101房间 + //张三先登记了填写了2个成员的信息 + //李四登记后,会更新这2个成员的信息 + //李四下次进入页面,展示这2个成员。 + LatestCollectResDTO resDTO = new LatestCollectResDTO(); + GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(formDTO.getGridId()); + if (null == gridInfoCache) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询网格信息异常", EpmetErrorCode.SERVER_ERROR.getMsg()); + } + + resDTO.setCustomerId(gridInfoCache.getCustomerId()); + resDTO.setGridId(formDTO.getGridId()); + AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(gridInfoCache.getPid()); + resDTO.setAgencyId(gridInfoCache.getPid()); + resDTO.setPids(null != agencyInfoCache ? agencyInfoCache.getPids() : StrConstant.EPMETY_STR); + resDTO.setAgencyName(gridInfoCache.getAgencyName()); + String latestResiCollectId = baseDao.selectLastSubmitId(formDTO.getCustomerId(), formDTO.getUserId()); + if (StringUtils.isNotBlank(latestResiCollectId)) { + resDTO.setResiCollectId(latestResiCollectId); + //之前提交过 + IcResiCollectEntity entity = baseDao.selectById(latestResiCollectId); + if (null != entity) { + setCollectValue(resDTO, entity); + } + List memberList = icResiMemberDao.selectMySubmit(latestResiCollectId, formDTO.getUserId()); + resDTO.setMemberList(memberList); + } + return resDTO; + } + + private void setCollectValue(LatestCollectResDTO resDTO, IcResiCollectEntity entity) { + resDTO.setVillageId(entity.getVillageId()); + resDTO.setBuildId(entity.getBuildId()); + resDTO.setUnitId(entity.getUnitId()); + resDTO.setHomeId(entity.getHomeId()); + resDTO.setAddress(entity.getAddress()); + resDTO.setHouseType(entity.getHouseType()); + resDTO.setHouseHolderName(entity.getHouseHolderName()); + resDTO.setTotalResi(entity.getTotalResi()); + } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml index 0be0e43c13..98725fa04e 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml @@ -55,11 +55,35 @@ UPDATE ic_resi_collect - SET UPDATED_TIME = NOW(), - HOUSE_TYPE = #{houseType}, - HOUSE_HOLDER_NAME = #{houseHolderName}, - TOTAL_RESI = #{totalResi} + SET + + HOUSE_TYPE = #{houseType}, + + + HOUSE_HOLDER_NAME = #{houseHolderName}, + + + TOTAL_RESI = #{totalResi}, + + + UPDATED_BY = #{updatedBy}, + + UPDATED_TIME = NOW() WHERE id = #{id} + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiMemberDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiMemberDao.xml index 6423f7ecff..b76345774c 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiMemberDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiMemberDao.xml @@ -4,5 +4,20 @@ - + \ No newline at end of file