DgReceiveServiceImpl.java 9.1 KB
package com.pashanhoo.receive.service.impl;

import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pashanhoo.archive.entity.DgArchivesConverter;
import com.pashanhoo.archive.entity.DgArchivesDO;
import com.pashanhoo.archive.entity.vo.AddDgArchivesRequest;
import com.pashanhoo.archive.service.DgArchivesService;
import com.pashanhoo.bdcdy.entity.DgBdcdyConverter;
import com.pashanhoo.bdcdy.entity.DgBdcdyDO;
import com.pashanhoo.bdcdy.entity.vo.AddDgBdcdyRequest;
import com.pashanhoo.bdcdy.entity.vo.UpdateDgBdcdyRequest;
import com.pashanhoo.bdcdy.service.DgBdcdyService;
import com.pashanhoo.business.entity.DgBusinessDO;
import com.pashanhoo.business.entity.vo.AddDgBusinessRequest;
import com.pashanhoo.business.entity.vo.DgBusinessSearchRequest;
import com.pashanhoo.business.mapper.DgBusinessMapper;
import com.pashanhoo.business.service.DgBusinessService;
import com.pashanhoo.common.Result;
import com.pashanhoo.receive.entity.DgReceiveConverter;
import com.pashanhoo.receive.entity.DgReceiveDO;
import com.pashanhoo.receive.entity.vo.AddDgReceiveRequest;
import com.pashanhoo.receive.entity.vo.DgReceiveDetailVO;
import com.pashanhoo.receive.entity.vo.UpdateDgReceiveRequest;
import com.pashanhoo.receive.entity.vo.DgReceiveSearchRequest;
import com.pashanhoo.receive.mapper.DgReceiveMapper;
import com.pashanhoo.receive.service.DgReceiveService;
import com.pashanhoo.receiverelation.entity.DgReceiveRelationConverter;
import com.pashanhoo.receiverelation.entity.DgReceiveRelationDO;
import com.pashanhoo.receiverelation.entity.vo.AddDgReceiveRelationRequest;
import com.pashanhoo.receiverelation.service.DgReceiveRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 档案接收记录 服务实现类
 * </p>
 *
 * @author
 * @since 2021-11-05
 */
@Service
public class DgReceiveServiceImpl extends ServiceImpl<DgReceiveMapper, DgReceiveDO> implements DgReceiveService {

    @Autowired
    private DgReceiveConverter dgreceiveConverter;
    @Autowired
    private DgBdcdyConverter bdcdyConverter;
    @Autowired
    private DgReceiveMapper dgreceiveMapper;
    @Autowired
    private DgBusinessService businessService;
    @Autowired
    private DgBusinessMapper  businessMapper;
    @Autowired
    private DgBdcdyService  bdcdyService;
    @Autowired
    private DgArchivesService  archivesService;
    @Autowired
    private DgArchivesConverter  archivesConverter;
    @Autowired
    private DgReceiveRelationService  relationService;
    @Autowired
    private DgReceiveRelationConverter  relationConverter;

    /**
     * 新增记录
     * @param request
     * @return
     */
    @Override
    public Result insertDgReceive(AddDgReceiveRequest request) {
        //获取接收编码
        String receiveBsm= IdWorker.get32UUID();
        request.setBms_receive(receiveBsm);
        //新增接收表信息=============start===========
        DgReceiveDO dgreceiveDO = dgreceiveConverter.addRequest2DO(request);
        //TODO获取归档方式
        if(dgreceiveDO.getGdfs()==null || "".equals(dgreceiveDO.getGdfs())){
            dgreceiveDO.setGdfs("1");
        }
        this.save(dgreceiveDO);
        //新增接收表信息=============end===========
        //获取登记传入的不动产单元List集合数据
        List<AddDgBdcdyRequest>  bdcdyRequestList=request.getBdcdyRequestList();
        //获取登记传入的业务数据
        AddDgBusinessRequest businessRequest=request.getBusinessRequest();
        //归档方式(1:按业务归档,2:按单元归档,3:档案补充归档)
        if("1".equals(dgreceiveDO.getGdfs())){
            //新增档案表基础信息
            AddDgArchivesRequest  archivesRequest=new  AddDgArchivesRequest();
            String bsm_archives= IdWorker.get32UUID();
            archivesRequest.setBsm_archives(bsm_archives);
            archivesRequest.setDazt(new BigDecimal("1"));
            archivesService.insertDgArchives(archivesRequest);
            //新增接收表和档案表关联关系表
            AddDgReceiveRelationRequest relationRequest=new AddDgReceiveRelationRequest();
            relationRequest.setBmsReceive(receiveBsm);
            relationRequest.setBsmArchives(bsm_archives);
            relationService.insertDgReceiveRelation(relationRequest);
        }else if("2".equals(dgreceiveDO.getGdfs())){
            List<AddDgReceiveRelationRequest> relationRequestList=new ArrayList<AddDgReceiveRelationRequest>();
            List<AddDgArchivesRequest>  archivesRequest=new ArrayList<AddDgArchivesRequest>(bdcdyRequestList.size());
            AddDgArchivesRequest  request1=null;
            AddDgReceiveRelationRequest receiveRelationRequest=null;
            for (int i = 0; i < bdcdyRequestList.size(); i++) {
                //组装档案表基础信息
                String bsm_archives= IdWorker.get32UUID();
                request1=new  AddDgArchivesRequest();
                request1.setBsm_archives(bsm_archives);
                request1.setDazt(new BigDecimal("1"));
                archivesRequest.add(request1);
                //组装接收表和档案表关联关系表
                receiveRelationRequest=new AddDgReceiveRelationRequest();
                receiveRelationRequest.setBmsReceive(receiveBsm);
                receiveRelationRequest.setBsmArchives(bsm_archives);
                relationRequestList.add(receiveRelationRequest);
            }
            //批量新增接收表和档案表关联关系表
            List<DgReceiveRelationDO> receiveRelationDOList=relationConverter.addReceiveRelationList(relationRequestList);
            relationService.saveBatch(receiveRelationDOList);
            //批量新增档案表基础信息
            List<DgArchivesDO> archivesDOList=archivesConverter.addArchivesList(archivesRequest);
            archivesService.saveBatch(archivesDOList);
        }else if("3".equals(dgreceiveDO.getGdfs())){
            //通过业务号和注销业务号查询业务表是否有数据,有数据则修改
            DgBusinessSearchRequest request2=new DgBusinessSearchRequest();
            request2.setYwh(businessRequest.getYwh());
            request2.setZxywh(businessRequest.getZxywh());
            DgBusinessDO businessDO=businessService.searchDgBusiness(request2);
            if(businessDO!=null){
                businessDO.setZxlx(businessRequest.getZxlx());
                //更新业务表中的注销类型
                businessMapper.updateById(businessDO);
                Date zxsj=null;
                for (int i = 0; i < bdcdyRequestList.size(); i++) {
                    if(businessDO.getBsmArchives().equals(bdcdyRequestList.get(i).getBsmArchives())){
                        zxsj=bdcdyRequestList.get(i).getZxsj();
                       break;
                    }
                }
                //更新不动产单元表中的注销时间
                UpdateDgBdcdyRequest updateDgBdcdyRequest=new UpdateDgBdcdyRequest();
                updateDgBdcdyRequest.setBsmArchives(businessDO.getBsmArchives());
                updateDgBdcdyRequest.setZxsj(zxsj);
                bdcdyService.updateDgBdcdyByArchive(updateDgBdcdyRequest);
            }
        }
        //新增业务表
        businessService.insertDgBusiness(businessRequest);
        //新增不动产单元号表
        List<DgBdcdyDO> bdcdyDOList=bdcdyConverter.addRequestListDO(bdcdyRequestList);
        bdcdyService.saveBatch(bdcdyDOList);
        return  Result.ok();
    }

    /**
     * 根据主键查询记录详情
     * @param id
     * @return
     */
    @Override
    public DgReceiveDetailVO getDgReceiveDetailById(String id) {
        DgReceiveDO dgreceiveDO = this.getById(id);
        return dgreceiveConverter.do2DetailVO(dgreceiveDO);
    }

    /**
     * 修改单条记录
     * @param request
     * @return
     */
    @Override
    public boolean updateDgReceive(UpdateDgReceiveRequest request) {
        DgReceiveDO dgreceiveDO = dgreceiveConverter.updateRequest2DO(request);
        return this.updateById(dgreceiveDO);
    }

    /**
     * 根据条件进行列表查询
     * @param request
     * @return
     */
    @Override
    public Page searchDgReceiveList(DgReceiveSearchRequest request) {
        Page<DgReceiveDO> pageParam = new Page<DgReceiveDO>(request.getCurrentPage(), request.getPageSize());
        QueryWrapper<DgReceiveDO> wrapper = new QueryWrapper<>();
        //设置默认排序
        wrapper = "desc".equals(request.getSortOrder()) ? wrapper.orderByDesc(request.getSortField()) :  wrapper.orderByAsc(request.getSortField());

        //TODO 根据当前情况设置wrapper条件

        Page page = this.page(pageParam, wrapper);
        //将查询出来的DO List转为 ListVO List并重新设置到page对象中,并返回page对象
        return page.setRecords(dgreceiveConverter.doList2ListVOList(page.getRecords()));
    }

}