TaskHeaderDeleteService.java 7.99 KB
package com.huaheng.pc.task.taskHeader.service;

import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;

import javax.annotation.Resource;

import com.huaheng.pc.srm.domain.SrmDetail;
import com.huaheng.pc.srm.domain.SrmDetailHistory;
import com.huaheng.pc.srm.domain.SrmHeader;
import com.huaheng.pc.srm.domain.SrmHeaderHistory;
import com.huaheng.pc.task.taskDetail.domain.TaskDetailHistory;
import com.huaheng.pc.task.taskDetail.service.TaskDetailHistoryService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeaderHisotry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huaheng.api.SSP.service.OrderAssignApiService;
import com.huaheng.api.acs.service.AcsService;
import com.huaheng.api.acs.service.AgvTaskCSCreateService;
import com.huaheng.api.acs.service.AgvTaskCSService;
import com.huaheng.api.wcs.domain.WcsTask;
import com.huaheng.api.wcs.service.taskAssignService.TaskAssignService;
import com.huaheng.api.wcs.service.taskCancel.TaskCancelService;
import com.huaheng.common.constant.HttpConstant;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.Assert;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.support.Convert;
import com.huaheng.common.utils.DateUtils;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.Wrappers;
import com.huaheng.common.utils.restful.RestUtil;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.address.service.AddressService;
import com.huaheng.pc.config.company.domain.Company;
import com.huaheng.pc.config.company.service.CompanyService;
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.config.containerType.domain.ContainerType;
import com.huaheng.pc.config.containerType.service.ContainerTypeService;
import com.huaheng.pc.config.cycleCountPreference.domain.CycleCountPreference;
import com.huaheng.pc.config.cycleCountPreference.service.CycleCountPreferenceService;
import com.huaheng.pc.config.location.domain.Location;
import com.huaheng.pc.config.location.service.LocationService;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.station.service.StationService;
import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.shipment.shipmentContainerAdvice.service.ShipmentContainerAdviceService;
import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerDetail;
import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService;
import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
import com.huaheng.pc.system.dict.service.IDictDataService;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.MobileTask;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.mapper.TaskHeaderMapper;

@Service
public class TaskHeaderDeleteService  {

    private static final Logger logger = LoggerFactory.getLogger(TaskHeaderDeleteService.class);
    @Resource
    private TaskDetailService taskDetailService;
    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private TaskHeaderHistoryService taskHeaderHistoryService;
    @Resource
    private TaskDetailHistoryService taskDetailHistoryService;

    @Transactional(rollbackFor = Exception.class)
    public int cleanDocuments() {
        //查找过期的入库单据
        String expireTime=DateUtils.getNowPreDays("yyyy-MM-dd 00:00:00", 366);
        LambdaQueryWrapper<TaskHeader>  wrapper=new LambdaQueryWrapper<>();
        wrapper.lt(TaskHeader::getCreated,expireTime);
        wrapper.last("limit 20");
        List<TaskHeader> taskHeaderList= taskHeaderService.list(wrapper);
        if (taskHeaderList.isEmpty()) {
            return 1;
        }
        for (TaskHeader taskHeader : taskHeaderList) {
            this.deleteHeaderHistory(taskHeader.getId());
        }
        return 1;
    }
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult deleteHeaderHistory(Integer id){
        TaskHeader taskHeader = taskHeaderService.getById(id);
        if (taskHeader == null) {
            return AjaxResult.error("没有找到单据" + String.valueOf(id));
        }
        LambdaQueryWrapper<TaskDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(TaskDetail::getTaskId, id);
        List<TaskDetail> list = taskDetailService.list(lambdaQueryWrapper);

        List<TaskDetailHistory> detailHistories = new ArrayList<>();
        if (!taskHeaderService.removeById(taskHeader)) {
            throw new ServiceException("删除头表失败");
        }
        List<Integer> detailIds = new ArrayList<>();
        TaskHeaderHisotry headerHistory = new TaskHeaderHisotry();
        org.springframework.beans.BeanUtils.copyProperties(taskHeader, headerHistory);
        headerHistory.setLastUpdated(new Date());
        if (!taskHeaderHistoryService.save(headerHistory)) {
            throw new ServiceException("新增历史头表失败");
        }
        for (TaskDetail taskDetail: list) {
            detailIds.add(taskDetail.getId());
            TaskDetailHistory srmDetailHistory = new TaskDetailHistory();
            org.springframework.beans.BeanUtils.copyProperties(taskDetail, srmDetailHistory);
            srmDetailHistory.setTaskId(headerHistory.getId());
            detailHistories.add(srmDetailHistory);
        }
        if(detailIds.size() > 0) {
            if (!taskDetailService.removeByIds(detailIds)) {
                throw new ServiceException("删除明细表失败");
            }
        }
        if(detailHistories.size() > 0) {
            if (!taskDetailHistoryService.saveBatch(detailHistories)) {
                throw new ServiceException("新增历史入库明细失败");
            }
        }
        return AjaxResult.success("删除成功");
    }


}