/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.place.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.logging.log4j.util.Strings; import org.springblade.common.constant.CommonConstant; import org.springblade.common.param.CommonParamSet; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.modules.place.entity.PlaceEntity; import org.springblade.modules.place.entity.PlacePractitionerEntity; import org.springblade.modules.place.excel.ImportPractitionerExcel; import org.springblade.modules.place.mapper.PlacePractitionerMapper; import org.springblade.modules.place.service.IPlacePractitionerService; import org.springblade.modules.place.service.IPlaceService; import org.springblade.modules.place.vo.PlacePractitionerVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; /** * 场所从业人员 服务实现类 * * @author BladeX * @since 2023-10-28 */ @Service public class PlacePractitionerServiceImpl extends ServiceImpl implements IPlacePractitionerService { @Autowired private IPlaceService placeService; @Override public IPage selectPlacePractitionerPage(IPage page, PlacePractitionerVO placePractitioner) { CommonParamSet commonParamSet = new CommonParamSet().invoke(PlacePractitionerVO.class, placePractitioner); List placePractitionerVOS = baseMapper.selectPlacePractitionerPage(page, placePractitioner, commonParamSet.getGridCodeList(), commonParamSet.getRegionChildCodesList(), commonParamSet.getIsAdministrator()); return page.setRecords(placePractitionerVOS); } /** * 统计少数民族和未成年数量 * * @return */ @Override public Object countByType(PlacePractitionerVO placePractitioner) { // 未成年数量 placePractitioner.setType(CommonConstant.NUMBER_ONE); Integer minors = baseMapper.selectPlaceCountByType(placePractitioner); // 少数民族 placePractitioner.setType(CommonConstant.NUMBER_TWO); Integer nationalMinority = baseMapper.selectPlaceCountByType(placePractitioner); Map resultMap = new HashMap<>(); resultMap.put("minors", minors); resultMap.put("nationalMinority", nationalMinority); return resultMap; } @Override public Boolean auditing(PlacePractitionerEntity placePractitioner) { placePractitioner.setConfirmUserId(AuthUtil.getUserId()); placePractitioner.setConfirmTime(new Date()); boolean update = update(Wrappers.lambdaUpdate() .set(PlacePractitionerEntity::getConfirmFlag, placePractitioner.getConfirmFlag()) .set(PlacePractitionerEntity::getConfirmNotion, placePractitioner.getConfirmNotion()) .set(PlacePractitionerEntity::getConfirmUserId, placePractitioner.getConfirmUserId()) .eq(PlacePractitionerEntity::getPlaceId, placePractitioner.getPlaceId()) .eq(PlacePractitionerEntity::getResignationFlag, 1) .eq(PlacePractitionerEntity::getIsDeleted, 0)); return update; } @Override public String importPractitioner(List data, boolean b) { int totalNum = data.size(); int importNum = 0; int updateNum = 0; int errorNum = 0; for (ImportPractitionerExcel placeExcel : data) { if (Strings.isBlank(placeExcel.getHouseCode()) || Strings.isBlank(placeExcel.getHouseCode())) { errorNum++; continue; } PlacePractitionerEntity placeEntity = Objects.requireNonNull(BeanUtil.copy(placeExcel, PlacePractitionerEntity.class)); // 查询场所是否存在 PlaceEntity placeServiceOne = placeService.getOne(Wrappers.lambdaQuery() .eq(PlaceEntity::getHouseCode, placeExcel.getHouseCode())); if (placeServiceOne != null) { placeEntity.setPlaceId(placeServiceOne.getId()); boolean save = save(placeEntity); if (save) { importNum++; } else { errorNum++; } } else { errorNum++; continue; } } StringBuilder builder = new StringBuilder("导入完成!"); builder.append("其中本次表格共有 ").append(totalNum).append(" 条数据,") .append("成功导入 ").append(importNum).append(" 条数据。"); if (updateNum > 0) { builder.append("其中有 ").append(updateNum).append(" 条数据已存在。"); } if (errorNum > 0) { builder.append("共有 ").append(errorNum).append(" 条数据由于无企业(店铺)名称信息或无地址编号未导入!"); } return builder.toString(); } }