KuaidiHeaderService.java 4.03 KB
package com.huaheng.pc.shipment.kuaidiHeader.service;

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.common.utils.StringUtils;
import com.huaheng.common.utils.Wrappers;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.service.DictService;
import com.huaheng.pc.shipment.kuaidiDetail.domain.KuaidiDetail;
import com.huaheng.pc.shipment.kuaidiHeader.domain.KuaidiHeader;
import com.huaheng.pc.shipment.kuaidiHeader.mapper.KuaidiHeaderMapper;
import com.huaheng.pc.system.dict.service.IDictDataService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;


/**
 * 【请填写功能名称】 服务层实现
 * 
 * @author huaheng
 * @date 2022-09-07
 */
@Service
public class KuaidiHeaderService extends ServiceImpl<KuaidiHeaderMapper, KuaidiHeader>  {

    @Resource
    private IDictDataService dictDataService;

    public AjaxResult<Boolean> saveHeader(KuaidiHeader kuaidiHeader)  {
        kuaidiHeader.setType("CO");
        if(dictDataService.checkConfig("shipmentType", kuaidiHeader.getType()) == false)
        {
            return  AjaxResult.error("没有对应的出库单类型");
        }
        String code = this.createCode(kuaidiHeader.getType());
        kuaidiHeader.setId(null);
        kuaidiHeader.setLastUpdated(null);
        kuaidiHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
        kuaidiHeader.setCreated(null);
        kuaidiHeader.setCreatedBy(ShiroUtils.getLoginName());
        kuaidiHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
        kuaidiHeader.setCode(code);
        kuaidiHeader.setDeleted(false);
        boolean result = this.save(kuaidiHeader);
        return  AjaxResult.toAjax(result);
    }


    public String createCode(String shipmentType)
    {
        String code = null;
        Date now = new Date();
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
        String maxCode =null;
        LambdaQueryWrapper<KuaidiHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(KuaidiHeader::getDeleted,false);
        lambdaQueryWrapper.eq(KuaidiHeader::getType,shipmentType);
        lambdaQueryWrapper.orderByDesc(KuaidiHeader::getId);
        lambdaQueryWrapper.last("limit 1");
        KuaidiHeader kuaidiHeader=this.getOne(lambdaQueryWrapper);
        if(kuaidiHeader!=null){
            maxCode=kuaidiHeader.getCode();
        }
        if (maxCode != null && maxCode.length() > 13 && maxCode.substring(maxCode.length() - 13, maxCode.length() - 5).equals(df.format(now)))
        {
            Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length()));
            code = shipmentType + df.format(now) + String.format("%05d", Count + 1);
        }
        else
        {
            code = shipmentType + df.format(now) + "00001";
        }
        return code;
    }

    /**
     * 从U8获取信息
     * 1、检查出库单号或者发货单号是否为空,如果为空则报错
     * 2、如果是出库单获取信息,剔除在快递单中已存在的出库单
     * 3、如果是发货单,分组,剔除在快递单中已存在的出库单
     *
     */
    @Transactional
    public AjaxResult saveU8Kuaidi(KuaidiHeader kuaidiHeader) {
        //1、检查出库单号或者发货单号是否为空,如果为空则报错
        if(StringUtils.isEmpty(kuaidiHeader.getOrderBill()) &&
                StringUtils.isEmpty(kuaidiHeader.getSourceCode())){
            return AjaxResult.error("U8出库单号和发货单号为空,请填下U8结束出库单号或发货单单号");
        }
        //2、如果是出库单获取信息,剔除在快递单中已存在的出库单

        return AjaxResult.success("成功");
    }
}