郑永安
2023-06-19 59e91a4e9ddaf23cebb12993c774aa899ab22d16
src/main/java/com/gk/firework/Service/ServiceImpl/DeliveryDetailServiceImpl.java
对比新文件
@@ -0,0 +1,173 @@
package com.gk.firework.Service.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gk.firework.Domain.DeliveryDetailInfo;
import com.gk.firework.Domain.DeliveryOrderInfo;
import com.gk.firework.Domain.Exception.BusinessException;
import com.gk.firework.Domain.ProductInfo;
import com.gk.firework.Domain.UserInfo;
import com.gk.firework.Domain.Utils.StringUtils;
import com.gk.firework.Domain.Vo.DirectionDetail;
import com.gk.firework.Domain.Vo.FireworkDeal;
import com.gk.firework.Mapper.DeliveryDetailInfoMapper;
import com.gk.firework.Mapper.ProductInfoMapper;
import com.gk.firework.Service.DeliveryDetailService;
import com.gk.firework.Service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
/**
 * @author : jingjy
 * @date : 2021/4/1 10:25
 */
@Service("DeliveryDetailService")
public class DeliveryDetailServiceImpl extends ServiceImpl<DeliveryDetailInfoMapper, DeliveryDetailInfo> implements DeliveryDetailService {
    @Autowired
    private ProductInfoMapper productInfoMapper;
    @Autowired
    private DeliveryDetailInfoMapper deliveryDetailInfoMapper;
    @Autowired
    private ProductService productService;
    @Override
    public List<DeliveryDetailInfo> generateDeliveryDetail(DeliveryOrderInfo deliveryOrderInfo, UserInfo userInfo, List<String> directionCodes) {
        List<DeliveryDetailInfo> deliveryDetailInfos = new ArrayList<>();
        int boxNum = 0;
        for (String dire : directionCodes){
            DirectionDetail detail = FireworkDeal.dealDirectionCode(dire);
            ProductInfo productInfo= productInfoMapper.selectProductByDirectionCode(detail.getItemCode());
            int num = 1;
            if (productInfo != null){
                if (detail.getLength() == FireworkDeal.DIRECTION_OUTSIDE){
                    num = Integer.parseInt(detail.getBoxNo());
                }
                DeliveryDetailInfo deliveryDetailInfo = new DeliveryDetailInfo();
                deliveryDetailInfo.setCreateby(userInfo.getUsername());
                deliveryDetailInfo.setCreateat(new Date());
                deliveryDetailInfo.setDeliverycode(deliveryOrderInfo.getOrdercode());
                deliveryDetailInfo.setDirectioncode(dire);
                deliveryDetailInfo.setItemname(productInfo.getName());
                deliveryDetailInfo.setItemcode(productInfo.getDirectionCode());
                deliveryDetailInfo.setNum(num);
                deliveryDetailInfos.add(deliveryDetailInfo);
                boxNum += num;
            }
        }
        deliveryOrderInfo.setBoxnum(boxNum);
        return deliveryDetailInfos;
    }
    /**
    * @Description: 根据{出库单号}查询出库明细
    * @date 2021/4/15 14:36
    */
    @Override
    public Page selectDetailPage(Page<Map> page, Map filter) {
        String code = (String) filter.get("code");
        if (StringUtils.isBlank(code)) {
            throw new BusinessException("出库单号不能为空");
        }
        Map<String, Object> params = new HashMap<>();
        params.put("code", code);
        params.put("starttime", filter.get("starttime"));
        params.put("endtime", filter.get("endtime"));
        List<Map> list = deliveryDetailInfoMapper.selectDetailPage(page,params);
        return page.setRecords(list);
    }
    /**
     * @Description: 根据{出库单code}查询出库明细并导出
     * @date 2021/4/15 11:09
     */
    @Override
    public List<Map> selectDetailExport(String code) {
        return deliveryDetailInfoMapper.selectDetailExport(code);
    }
    @Override
    public List<DeliveryDetailInfo> getDetailByCode(String ordercode) {
        LambdaQueryWrapper<DeliveryDetailInfo> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(DeliveryDetailInfo::getDeliverycode,ordercode);
        return deliveryDetailInfoMapper.selectList(wrapper);
    }
    @Override
    public BigDecimal selectEnterpriseDeliveryNumber(String enterprisenumber, Object starttime, Object endtime) {
        return deliveryDetailInfoMapper.selectEnterpriseDeliveryNumber(enterprisenumber,starttime,endtime);
    }
    @Override
    public IPage selectEnterpriseTypeDelivery(Page<Map> page, Map<String, Object> filter, UserInfo user) {
        Map<String, Object> params = new HashMap<>();
        params.put("starttime", filter.get("starttime"));
        params.put("endtime", filter.get("endtime"));
        params.put("enterprisename", filter.get("enterprisename"));
        params.put("safetysupervision", filter.get("safetysupervision"));
        params.put("province", filter.get("province"));
        params.put("city", filter.get("city"));
        params.put("district", filter.get("district"));
        List<String> list = productService.selectTypes();
        List<Map> res = deliveryDetailInfoMapper.selectEnterpriseTypeDelivery(page, params, list);
        Map totalRow = deliveryDetailInfoMapper.selectAllType(params, list);
        ArrayList<Map> result = new ArrayList<>(res);
        result.add(totalRow);
        return page.setRecords(result);
    }
    @Override
    public List<Map> selectExportEnterpriseTypeDelivery(Map<String, Object> filter, UserInfo user) {
        Map<String, Object> params = new HashMap<>();
        params.put("starttime", filter.get("starttime"));
        params.put("endtime", filter.get("endtime"));
        params.put("enterprisename", filter.get("enterprisename"));
        params.put("safetysupervision", filter.get("safetysupervision"));
        params.put("province", filter.get("province"));
        params.put("city", filter.get("city"));
        params.put("district", filter.get("district"));
        List<String> list = productService.selectTypes();
        List<Map> res = deliveryDetailInfoMapper.selectEnterpriseTypeDelivery(params, list);
        Map totalRow = deliveryDetailInfoMapper.selectAllType(params, list);
        ArrayList<Map> result = new ArrayList<>(res);
        result.add(totalRow);
        return result;
    }
    @Override
    public IPage selectCityTypeDelivery(Page<Map> page, Map<String, Object> filter, UserInfo user) {
        Map<String, Object> params = new HashMap<>();
        params.put("province", "新疆维吾尔自治区");
        params.put("starttime", filter.get("starttime"));
        params.put("endtime", filter.get("endtime"));
        params.put("safetysupervision", filter.get("safetysupervision"));
        params.put("enterprisename", filter.get("enterprisename"));
        List<String> list = productService.selectTypes();
        List<Map> res = deliveryDetailInfoMapper.selectCityTypeDelivery(page,params, list);
        Map totalRow = deliveryDetailInfoMapper.selectAllType(params, list);
        ArrayList<Map> result = new ArrayList<>(res);
        result.add(totalRow);
        return page.setRecords(result);
    }
    @Override
    public List<Map> selectExportCityTypeDelivery(Map<String, Object> filter, UserInfo user) {
        Map<String, Object> params = new HashMap<>();
        params.put("province", "新疆维吾尔自治区");
        params.put("starttime", filter.get("starttime"));
        params.put("endtime", filter.get("endtime"));
        params.put("safetysupervision", filter.get("safetysupervision"));
        params.put("enterprisename", filter.get("enterprisename"));
        List<String> list = productService.selectTypes();
        List<Map> res = deliveryDetailInfoMapper.selectCityTypeDelivery(params, list);
        Map totalRow = deliveryDetailInfoMapper.selectAllType(params, list);
        ArrayList<Map> result = new ArrayList<>(res);
        result.add(totalRow);
        return result;
    }
}