| | |
| | | import org.sxkj.fw.area.dto.FwAreaDivideDTO; |
| | | import org.sxkj.fw.area.dto.FwAreaDivideStatisticsDTO; |
| | | import org.sxkj.fw.area.entity.FwAreaDivideEntity; |
| | | import org.sxkj.fw.area.entity.FwAreaDivideExtEntity; |
| | | import org.sxkj.fw.area.vo.FwAreaDivideVO; |
| | | import org.sxkj.fw.area.vo.FwAreaDivideStatisticsVO; |
| | | import org.sxkj.fw.area.vo.FwDefenseSceneVO; |
| | | import org.sxkj.fw.area.excel.FwAreaDivideExcel; |
| | | import org.sxkj.fw.area.mapper.FwAreaDivideMapper; |
| | | import org.sxkj.fw.area.service.IFwAreaDivideService; |
| | | import org.sxkj.fw.area.service.IFwAreaDivideExtService; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import lombok.AllArgsConstructor; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | |
| | | * @since 2026-01-07 |
| | | */ |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class FwAreaDivideServiceImpl extends BaseServiceImpl<FwAreaDivideMapper, FwAreaDivideEntity> |
| | | implements IFwAreaDivideService { |
| | | |
| | | private final IFwAreaDivideExtService fwAreaDivideExtService; |
| | | |
| | | @Override |
| | | public IPage<FwAreaDivideVO> selectFwAreaDividePage(IPage<FwAreaDivideVO> page, FwAreaDivideDTO fwAreaDivide) { |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean saveOrUpdateWithExt(FwAreaDivideEntity fwAreaDivide, List<FwAreaDivideExtEntity> fwAreaDivideExtList) { |
| | | // 主表与扩展面数据保持同一事务,扩展面列表为空时仅保存主表 |
| | | if (fwAreaDivide == null) { |
| | | return false; |
| | | } |
| | | boolean isCreate = fwAreaDivide.getId() == null; |
| | | boolean mainResult = saveOrUpdate(fwAreaDivide); |
| | | if (!mainResult) { |
| | | return false; |
| | | } |
| | | if (fwAreaDivideExtList == null || fwAreaDivideExtList.isEmpty()) { |
| | | return true; |
| | | } |
| | | List<FwAreaDivideExtEntity> extList = new ArrayList<>(); |
| | | for (FwAreaDivideExtEntity ext : fwAreaDivideExtList) { |
| | | if (ext == null) { |
| | | continue; |
| | | } |
| | | ext.setAreaDivideId(fwAreaDivide.getId()); |
| | | if (StringUtil.isBlank(ext.getAreaCode()) && StringUtil.isNotBlank(fwAreaDivide.getAreaCode())) { |
| | | ext.setAreaCode(fwAreaDivide.getAreaCode()); |
| | | } |
| | | fillCreateFieldsExt(ext); |
| | | extList.add(ext); |
| | | } |
| | | if (extList.isEmpty()) { |
| | | return true; |
| | | } |
| | | if (!isCreate) { |
| | | // 更新时先清理该主表下历史扩展面数据,再整体写入 |
| | | QueryWrapper<FwAreaDivideExtEntity> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda().eq(FwAreaDivideExtEntity::getAreaDivideId, fwAreaDivide.getId()); |
| | | fwAreaDivideExtService.remove(wrapper); |
| | | } |
| | | if (!fwAreaDivideExtService.saveBatchWithGeom(extList)) { |
| | | throw new RuntimeException("保存区域扩展面数据失败"); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | private void fillCreateFields(FwAreaDivideEntity fwAreaDivide) { |
| | | Long userId = AuthUtil.getUserId(); |
| | | String deptIdStr = AuthUtil.getDeptId(); |
| | |
| | | fwAreaDivide.setUpdateTime(new Date()); |
| | | } |
| | | |
| | | private void fillCreateFieldsExt(FwAreaDivideExtEntity fwAreaDivideExt) { |
| | | Long userId = AuthUtil.getUserId(); |
| | | String deptIdStr = AuthUtil.getDeptId(); |
| | | Long deptId = null; |
| | | if (StringUtil.isNotBlank(deptIdStr)) { |
| | | try { |
| | | deptId = Long.valueOf(deptIdStr); |
| | | } catch (NumberFormatException ignored) { |
| | | deptId = null; |
| | | } |
| | | } |
| | | Date now = new Date(); |
| | | if (fwAreaDivideExt.getCreateUser() == null) { |
| | | fwAreaDivideExt.setCreateUser(userId); |
| | | } |
| | | if (fwAreaDivideExt.getUpdateUser() == null) { |
| | | fwAreaDivideExt.setUpdateUser(userId); |
| | | } |
| | | if (fwAreaDivideExt.getCreateDept() == null && deptId != null) { |
| | | fwAreaDivideExt.setCreateDept(deptId); |
| | | } |
| | | if (fwAreaDivideExt.getCreateTime() == null) { |
| | | fwAreaDivideExt.setCreateTime(now); |
| | | } |
| | | if (fwAreaDivideExt.getUpdateTime() == null) { |
| | | fwAreaDivideExt.setUpdateTime(now); |
| | | } |
| | | } |
| | | |
| | | private List<Long> parseIdList(String ids) { |
| | | if (StringUtil.isBlank(ids)) { |
| | | return new ArrayList<>(); |