/* * 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.sxkj.gd.orderdata.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.sxkj.gd.orderdata.dto.GdDataObjectionDTO; import org.sxkj.gd.orderdata.entity.GdDataObjectionAttachmentEntity; import org.sxkj.gd.orderdata.entity.GdDataObjectionEntity; import org.sxkj.gd.orderdata.excel.GdDataObjectionExcel; import org.sxkj.gd.orderdata.mapper.GdDataObjectionMapper; import org.sxkj.gd.orderdata.param.GdDataObjectionDetailParam; import org.sxkj.gd.orderdata.param.GdDataObjectionPageParam; import org.sxkj.gd.orderdata.service.IGdDataObjectionAttachmentService; import org.sxkj.gd.orderdata.service.IGdDataObjectionService; import org.sxkj.gd.orderdata.vo.GdDataObjectionVO; import org.sxkj.gd.orderdata.wrapper.GdDataObjectionWrapper; import org.sxkj.gd.orderdata.wrapper.GdSupplyDemandAuditAttachmentWrapper; import org.sxkj.system.cache.SysCache; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 数据异议申请表 服务实现类 * * @author lw * @since 2026-01-16 */ @Service public class GdDataObjectionServiceImpl extends BaseServiceImpl implements IGdDataObjectionService { @Autowired private IGdDataObjectionAttachmentService gdDataObjectionAttachmentService; @Override public IPage selectGdDataObjectionPage(IPage page, GdDataObjectionPageParam gdDataObjection) { List deptList = new ArrayList<>(); if (!AuthUtil.isAdministrator()) { deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId())); } gdDataObjection.setDeptList(deptList); return page.setRecords(baseMapper.selectGdDataObjectionPage(page, gdDataObjection)); } @Override public List exportGdDataObjection(Wrapper queryWrapper) { List gdDataObjectionList = baseMapper.exportGdDataObjection(queryWrapper); // gdDataObjectionList.forEach(gdDataObjection -> { // gdDataObjection.setTypeName(DictCache.getValue(DictEnum.YES_NO, GdDataObjection.getType())); //}); return gdDataObjectionList; } @Override public boolean saveOrUpdateDataObjection(GdDataObjectionDTO gdDataEvaluationDTO) { GdDataObjectionEntity gdDataObjectionEntity = GdDataObjectionWrapper.build().entityDTO(gdDataEvaluationDTO); if(gdDataObjectionEntity.getObjectionStatus().equals("2")){ String deptName = SysCache.getDeptName(Long.valueOf(AuthUtil.getDeptId())); gdDataObjectionEntity.setHandleUnit(deptName); } boolean result = saveOrUpdate(gdDataObjectionEntity); if (result) { if (gdDataEvaluationDTO.getAttachmentList() != null) { List entityList = GdSupplyDemandAuditAttachmentWrapper.build().entityDTO(gdDataEvaluationDTO.getAttachmentList()); List list = gdDataObjectionAttachmentService.list(Wrappers.lambdaQuery() .eq(GdDataObjectionAttachmentEntity::getObjectionId, gdDataObjectionEntity.getId()) .eq(GdDataObjectionAttachmentEntity::getIsDeleted, 0)); // 过滤出list中存在但entityList不包含的数据(根据ID进行比较) List toDeleteList = list.stream() .filter(item -> !entityList.stream() .anyMatch(entityItem -> item.getId() != null && entityItem.getId() != null && item.getId().equals(entityItem.getId()))) .collect(Collectors.toList()); // 删除过滤出的数据 if (!toDeleteList.isEmpty()) { List idsToDelete = toDeleteList.stream() .map(GdDataObjectionAttachmentEntity::getId) .collect(Collectors.toList()); gdDataObjectionAttachmentService.deleteLogic(idsToDelete); } entityList.forEach(gdDataObjectionAttachmentEntity -> { gdDataObjectionAttachmentEntity.setObjectionId(gdDataObjectionEntity.getId()); }); return gdDataObjectionAttachmentService.saveOrUpdateBatch(entityList); } return true; } return false; } /** * @param gdDataObjection * @return */ @Override public GdDataObjectionVO getDetail(GdDataObjectionDetailParam gdDataObjection) { return baseMapper.getDetail(gdDataObjection); } }