//package com.prolog.eis.service.container.impl;
//
//import com.prolog.cs.basic.item.model.BaseMtlItemUomConversions;
//import com.prolog.cs.basic.item.model.vo.ItemSyncVO;
//import com.prolog.eis.dao.container.GoodsInfoMapper;
//import com.prolog.eis.dto.wms.WmsItemInfoCall;
//import com.prolog.eis.model.container.GoodsInfo;
//import com.prolog.eis.service.container.GoodsInfoService;
//import com.prolog.eis.service.feign.FeignGoodsService;
//import com.prolog.framework.common.message.RestMessage;
//import com.prolog.framework.core.pojo.Page;
//import com.prolog.framework.core.restriction.Criteria;
//import com.prolog.framework.utils.AssertUtils;
//import com.prolog.framework.utils.MapUtils;
//import org.apache.commons.collections.CollectionUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.math.BigDecimal;
//import java.time.LocalDateTime;
//import java.util.Arrays;
//import java.util.List;
//import java.util.Map;
//import java.util.Objects;
//
///**
// * @author zmr
// * @description: 商品资料表-服务实现类
// * @date 2023-07-06 11:27
// */
//@Service
//public class GoodsInfoServiceImpl implements GoodsInfoService {
//
//    @Autowired
//    private GoodsInfoMapper goodsInfoMapper;
//    @Autowired
//    private FeignGoodsService feignGoodsService;
//    /**
//     * 新增数据
//     *
//     * @param goodsInfo 商品资料表
//     */
//    @Override
//    public long save(GoodsInfo goodsInfo) {
//        return goodsInfoMapper.save(goodsInfo);
//    }
//
//    /**
//     * 新增批量数据
//     *
//     * @param goodsInfoList 商品资料表
//     */
//    @Override
//    public long saveBatch(List<GoodsInfo> goodsInfoList) {
//        return goodsInfoMapper.saveBatch(goodsInfoList);
//    }
//
//    /**
//     * 查询多条数据
//     *
//     * @param paramMap 查询起始位置
//     * @return 对象列表
//     */
//    @Override
//    public List<GoodsInfo> findByMap(Map<String, Object> paramMap) {
//        return goodsInfoMapper.findByMap(paramMap, GoodsInfo.class);
//    }
//
//    /**
//     * 查询单条数据
//     *
//     * @param paramMap 查询起始位置
//     * @return 对象
//     */
//    @Override
//    public GoodsInfo findOneByMap(Map<String, Object> paramMap) {
//        List<GoodsInfo> dataList = findByMap(paramMap);
//        if(dataList.isEmpty()) {
//            return null;
//        }
//        return dataList.get(0);
//    }
//
//    /**
//     * 查询多条数据
//     *
//     * @param criteria 查询起始位置
//     * @return 对象列表
//     */
//    @Override
//    public List<GoodsInfo> findByCriteria(Criteria criteria) {
//        return goodsInfoMapper.findByCriteria(criteria);
//    }
//
//    /**
//     * 通过ID查询单条数据
//     *
//     * @param id 主键
//     * @return 实例对象
//     */
//    @Override
//    public GoodsInfo findById(int id) {
//        return goodsInfoMapper.findById(id, GoodsInfo.class);
//    }
//
//    /**
//     * 修改数据
//     *
//     * @param goodsInfo 实例对象
//     */
//    @Override
//    public long update(GoodsInfo goodsInfo) {
//        return goodsInfoMapper.update(goodsInfo);
//    }
//
//    /**
//     * 通过主键删除数据
//     *
//     * @param id 主键
//     */
//    @Override
//    public long deleteById(int id) {
//        return goodsInfoMapper.deleteById(id, GoodsInfo.class);
//    }
//
//    /**
//     * 通过参数删除数据
//     *
//     * @param paramMap 参数
//     */
//    @Override
//    public long deleteByMap(Map<String, Object> paramMap) {
//        return goodsInfoMapper.deleteByMap(paramMap, GoodsInfo.class);
//    }
//
//    /**
//     * 通过参数查询总条数
//     *
//     * @param paramMap 参数
//     */
//    @Override
//    public long findCountByMap(Map<String, Object> paramMap) {
//        return goodsInfoMapper.findCountByMap(paramMap, GoodsInfo.class);
//    }
//
//    /**
//     * 保存入库单商品
//     * @param itemId
//     * @return
//     */
//    @Override
//    public GoodsInfo saveAndGetInboundGoodsInfo(String itemId) throws Exception{
//        //请求wms商品信息详细
//        GoodsInfo item = goodsInfoMapper.findByMap(MapUtils.put("itemId",itemId).getMap(), GoodsInfo.class).stream().findFirst().orElse(null);
//        //商品未存储
//        if(Objects.isNull(item)){
//            //调用商品服务获取商品信息
//            ItemSyncVO itemInfo = feignGoodsService.getItemInfo(itemId);
//            BaseMtlItemUomConversions baseMtlItemUomConversions = itemInfo.getUomList().get(0);
//
//            //保存
//            item = new GoodsInfo();
//            item.setItemId(itemId);
//            item.setItemCode(itemInfo.getItemCode());
//            item.setItemName(itemInfo.getItemName());
//            item.setPackSize(baseMtlItemUomConversions.getConversionRate());
//            item.setItemType(itemInfo.getItemHealthCategoryName());
//            item.setAbcType(itemInfo.getAbcType());
//            item.setCountryOrigin(baseMtlItemUomConversions.getCountryOrigin());
//            item.setEttscodeflag(itemInfo.getItemHealthSuperviseflag());
//            item.setItemHealthListedLicensor(itemInfo.getItemHealthListedLicensor());
//            item.setManagementBatchNbr(itemInfo.getManagementBatchNbr());
//            item.setManagementExpiredDate(itemInfo.getManagementExpiredDate());
//            item.setPieceUom(itemInfo.getPieceUom());
//            item.setShelfLifeDay(item.getShelfLifeDay());
//            item.setVolume(baseMtlItemUomConversions.getVolume());
//            item.setZjm(itemInfo.getItemAssistantCode());
//            item.setPieceConversionRate(itemInfo.getPieceConversionRate());
//            item.setBarcode(baseMtlItemUomConversions.getBarcode());
//            item.setCreateTime(LocalDateTime.now());
//            item.setUpdateTime(LocalDateTime.now());
//            item.setSingleVolume(
//                    null == itemInfo.getUomList() || itemInfo.getUomList().isEmpty() ? BigDecimal.ZERO
//                            : itemInfo.getUomList().get(0).getVolume());
//            item.setPieceBarcode(itemInfo.getPieceBarcode());
//            item.setManufacturerId(itemInfo.getManufacturerId());
//            item.setItemHealthCategory(itemInfo.getItemHealthCategory());
//            item.setItemHealthApprovalNbr(itemInfo.getItemHealthApprovalNbr());
//            item.setCargoOwnerName(itemInfo.getCargoOwnerName());
//            item.setSpecification(itemInfo.getSpecification());
//            goodsInfoMapper.save(item);
//        }
//        return item;
//    }
//}
