ChmConsignmentDetailService.java 11.6 KB
package com.erry.iclear.dateInterface.service;

import com.erry.iclear.dateInterface.api.request.MawbDetail;
import com.erry.iclear.dateInterface.common.Constant;
import com.erry.iclear.dateInterface.entity.*;
import com.erry.iclear.dateInterface.repository.ChmConsignmentDetailRepository;
import com.erry.iclear.dateInterface.repository.ChmConsignmentRepository;
import com.erry.iclear.dateInterface.util.NumberUtils;
import com.erry.iclear.dateInterface.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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

/**
 * @author Administrator
 */
@Service
@Slf4j
public class ChmConsignmentDetailService {


    @Autowired
    private ChmConsignmentDetailRepository chmConsignmentDetailRepository;


    /**
     * 转换运单明细
     * @param mawbDetail
     * @return
     */
    public ChmConsignmentDetail convertToChmConsignmentDetail(MawbDetail mawbDetail,ChmConsignment chmConsignment){
        ChmConsignmentDetail result = new ChmConsignmentDetail();
        try{
            result.setChmConsignment(chmConsignment);

            //归类标志

            //商品编号
            result.setSkuCode(mawbDetail.getCodeTS());
            //申报单价
            result.setOriRegion(mawbDetail.getDeclPrice());
            //申报总价
            result.setAmount(mawbDetail.getDeclTotal());
            //征免方式
            DictionaryEntries levyTypeDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.LEVY_TYPE+mawbDetail.getDutyMode());
            if(!Objects.equals(levyTypeDictionaryEntries,null)){
                result.setLevyTypeDic(levyTypeDictionaryEntries);
                result.setLevyType(levyTypeDictionaryEntries.getChineseName());
            }
            //货号
            //版本号
            //第一计量单位(法定单位)
            DictionaryEntries firstUnitDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.TRANSACTION_UNIT+ mawbDetail.getFirstUnit());
            if(!Objects.equals(firstUnitDictionaryEntries,null)){
                result.setUnitLegalFirstId(firstUnitDictionaryEntries);
                result.setUnitLegalFirst(firstUnitDictionaryEntries.getChineseName());
            }
            //第一法定数量
            result.setQtyLegalFirst(BigDecimal.valueOf(mawbDetail.getFirstQty().doubleValue()));
            //成交计量单位
            //2021年7月8日 成交单位有修改,原取值第一法定计量单位,先取值成交单位。xjq
            DictionaryEntries knockdownUnitEntries = Constant.dictionaryEntriesCache.get(Constant.TRANSACTION_UNIT+ mawbDetail.getGunit());
            if(!Objects.equals(knockdownUnitEntries,null)){
                result.setKnockdownUnitDic(knockdownUnitEntries);
                result.setKnockdownUnit(knockdownUnitEntries.getChineseName());
            }
            //商品规格、型号
            result.setModel(mawbDetail.getGmodel());
            //商品名称
            result.setSkuName(mawbDetail.getGname());
            //商品序号
            //成交数量
            result.setKnockdownNumber(BigDecimal.valueOf(mawbDetail.getGqty().doubleValue()));
            //原产国
            DictionaryEntries habitatDictonaryEntries = Constant.dictionaryEntriesCache.get(Constant.COUNTRY+ mawbDetail.getOriginCountry());
            if(!Objects.equals(habitatDictonaryEntries,null)){
                result.setHabitatDic(habitatDictonaryEntries);
                result.setHabitat(habitatDictonaryEntries.getChineseName());
            }
            //第二计量单位
            DictionaryEntries secondUnitDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.TRANSACTION_UNIT+ mawbDetail.getSecondUnit());
            if(!Objects.equals(secondUnitDictionaryEntries,null)){
                result.setUnitLegalSecondId(secondUnitDictionaryEntries);
                result.setUnitLegalSecond(secondUnitDictionaryEntries.getChineseName());
            }
            //第二法定数量
            result.setQtyLegalSecond(BigDecimal.valueOf(mawbDetail.getSecondQty().doubleValue()));
            //成交币制
            DictionaryEntries currencyDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.CURRENCY_SYSTEM+ mawbDetail.getTradeCurr());
            if(!Objects.equals(currencyDictionaryEntries,null)){
                result.setCurrencyDic(currencyDictionaryEntries);
                result.setCurrency(currencyDictionaryEntries.getChineseName());
            }

            //用途/生产厂家
            //工缴费
            //最终目的国
            DictionaryEntries destinationCountryDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.COUNTRY+ mawbDetail.getDestinationCountry());
            if(!Objects.equals(destinationCountryDictionaryEntries,null)){
                result.setDestinationCountryDic(destinationCountryDictionaryEntries);
                result.setDestinationCountry(destinationCountryDictionaryEntries.getChineseName());
            }

            //检验检疫编码
            //申报货物英文名称
            result.setContentDescription(mawbDetail.getDeclGoodsEname());
            //目的地代码
            if(StringUtils.isNotBlank(mawbDetail.getDestCode())){
                OrigplacecodeMapping origplacecodeMapping = Constant.origplacecodeMappingCache.get(mawbDetail.getDestCode());
                result.setOrigplacecodeMapping(origplacecodeMapping);
                result.setOrigplacecode(Objects.equals(origplacecodeMapping,null)?"":origplacecodeMapping.getOrigplaceName());
            }

            //境内目的地/境内货源地
            DomesticDestinationMapping domesticDestinationDictionaryEntries = Constant.domesticDestinationMappingCache.get(mawbDetail.getDistrictCode());
            if(!Objects.equals(domesticDestinationDictionaryEntries,null)){
                result.setDomesticDestinationMapping(domesticDestinationDictionaryEntries);
                result.setDomesticDestination(Objects.equals(destinationCountryDictionaryEntries,null)?"":destinationCountryDictionaryEntries.getChineseName());
            }
            result.setDetailId(mawbDetail.getDetailId());
            //录入品名
            result.setInputItem(StringUtil.isEmptyWithTrim(mawbDetail.getGname()) == true ? "" : mawbDetail.getGname());
        }catch (Exception e){
            log.error("convertToChmConsignmentDetail() error:"+e.getMessage());
        }
        return result;
    }

    /**
     * 转换运单明细
     * @param detail
     * @param gno
     * @return
     */
    public MawbDetail convertToChmConsignmentDetail(ChmConsignmentDetail detail,String gno){
        MawbDetail result = new MawbDetail();
        try{
            //明细ID
            result.setDetailId(detail.getId().toString());
            //归类标志
            result.setClassMark("");
            //商品编号  必须是十位,不足的后补 00
            result.setCodeTS(detail.getSkuCode());
            //申报单价  小数点保留4位
            result.setDeclPrice(NumberUtils.bigDecimalFormat(detail.getOriRegion(),4));
            //申报总价  小数点保留2位
            result.setDeclTotal(NumberUtils.bigDecimalFormat(detail.getAmount(),2));
            //征免方式  数字一字码,0~9
            if(!Objects.equals(detail.getLevyTypeDic(),null)){
                result.setDutyMode(detail.getLevyTypeDic().getExt2());
            }
            //货号    有值传值,无值填空值
            result.setExgNo("");
            //版本号   有值传值,无值填空值
            result.setExgVersion("");
            //第一计量单位(法定单位)  数字三字码
            if(!Objects.equals(detail.getUnitLegalFirstId(),null)){
                result.setFirstUnit(detail.getUnitLegalFirstId().getExt2());
            }
            //第一法定数量
            result.setFirstQty(NumberUtils.bigDecimalToIntger(detail.getQtyLegalFirst()));
            //成交计量单位    数字三字码
            if(!Objects.equals(detail.getKnockdownUnitDic(),null)){
                result.setGunit(detail.getKnockdownUnitDic().getExt2());
            }
            //商品规格、型号
            result.setGmodel(detail.getModel());
            //商品名称  品名必填且必须包含中文字符
            result.setGname(detail.getSkuName());
            //商品序号
            result.setGno(gno);
            //成交数量
            result.setGqty(detail.getKnockdownNumber());
            //原产国   英文三字码
            if(!Objects.equals(detail.getHabitatDic(),null)){
                result.setOriginCountry(detail.getHabitatDic().getExt3());
            }
            //第二计量单位    数字三字码
            if(!Objects.equals(detail.getUnitLegalSecondId(),null)){
                result.setSecondUnit(detail.getUnitLegalSecondId().getExt2());
            }
            //第二法定数量
            result.setSecondQty(NumberUtils.bigDecimalToIntger(detail.getQtyLegalSecond()));
            //成交币制  英文三字码
            if(!Objects.equals(detail.getCurrencyDic(),null)){
                result.setTradeCurr(detail.getCurrencyDic().getExt2());
            }
            //用途/生产厂家
            result.setUseTo("");
            //工缴费
            result.setWorkUsd(new BigDecimal(0));
            //最终目的国 英文三字码
            if(!Objects.equals(detail.getDestinationCountryDic(),null)){
                result.setDestinationCountry(detail.getDestinationCountryDic().getExt3());
            }
            //检验检疫编码
            result.setCiqCode("");
            //申报货物英文名称
            result.setDeclGoodsEname(detail.getContentDescription());
            //目的地代码 有值传值,无值填空值
            if(!Objects.equals(detail.getOrigplacecodeMapping(),null)){
                result.setDestCode(detail.getOrigplacecodeMapping().getOrigplaceCode());
            }else{
                result.setDestCode("");
            }
            //境内目的地/境内货源地
            if(!Objects.equals(detail.getDomesticDestinationMapping(),null)){
                result.setDistrictCode(detail.getDomesticDestinationMapping().getDistrictCode());
            }
            result.setDetailId(detail.getDetailId());
        }catch (Exception e){
            log.error("convertToChmConsignmentDetail() error:"+e.getMessage());
        }

        return result;
    }

    public List<ChmConsignmentDetail> findChmConsignmentDetailListByConsignmentCode(Long consignmentId){
        List<ChmConsignmentDetail> result = new ArrayList<>();
        try{
            result= chmConsignmentDetailRepository.findChmConsignmentDetailByConsignmentCode(consignmentId);
        }catch (Exception e){
            log.error("findChmConsignmentDetailListByConsignmentCode() error:"+e.getMessage());
        }
        return result;
    }

    public void saveDetailList(List<ChmConsignmentDetail> chmConsignmentDetailList){
        chmConsignmentDetailRepository.saveAll(chmConsignmentDetailList);
    }

    public void saveChmConsignmentDetail(ChmConsignmentDetail consignmentDetail){
        chmConsignmentDetailRepository.save(consignmentDetail);
    }

    public void deleteChmConsignmentDetail(Long id){
        chmConsignmentDetailRepository.deleteById(id);
    }

    public void deleteChmConsignmentDetailBatch(List<Long> idList){
        chmConsignmentDetailRepository.deleteChmConsignmentDetailByChnConIdList(idList);
    }
}