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 implements DeliveryDetailService { @Autowired private ProductInfoMapper productInfoMapper; @Autowired private DeliveryDetailInfoMapper deliveryDetailInfoMapper; @Autowired private ProductService productService; @Override public List generateDeliveryDetail(DeliveryOrderInfo deliveryOrderInfo, UserInfo userInfo, List directionCodes) { List 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 page, Map filter) { String code = (String) filter.get("code"); if (StringUtils.isBlank(code)) { throw new BusinessException("出库单号不能为空"); } Map params = new HashMap<>(); params.put("code", code); params.put("starttime", filter.get("starttime")); params.put("endtime", filter.get("endtime")); List list = deliveryDetailInfoMapper.selectDetailPage(page,params); return page.setRecords(list); } /** * @Description: 根据{出库单code}查询出库明细并导出 * @date 2021/4/15 11:09 */ @Override public List selectDetailExport(String code) { return deliveryDetailInfoMapper.selectDetailExport(code); } @Override public List getDetailByCode(String ordercode) { LambdaQueryWrapper 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 page, Map filter, UserInfo user) { Map 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 list = productService.selectTypes(); List res = deliveryDetailInfoMapper.selectEnterpriseTypeDelivery(page, params, list); Map totalRow = deliveryDetailInfoMapper.selectAllType(params, list); ArrayList result = new ArrayList<>(res); result.add(totalRow); return page.setRecords(result); } @Override public List selectExportEnterpriseTypeDelivery(Map filter, UserInfo user) { Map 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 list = productService.selectTypes(); List res = deliveryDetailInfoMapper.selectEnterpriseTypeDelivery(params, list); Map totalRow = deliveryDetailInfoMapper.selectAllType(params, list); ArrayList result = new ArrayList<>(res); result.add(totalRow); return result; } @Override public IPage selectCityTypeDelivery(Page page, Map filter, UserInfo user) { Map 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 list = productService.selectTypes(); List res = deliveryDetailInfoMapper.selectCityTypeDelivery(page,params, list); Map totalRow = deliveryDetailInfoMapper.selectAllType(params, list); ArrayList result = new ArrayList<>(res); result.add(totalRow); return page.setRecords(result); } @Override public List selectExportCityTypeDelivery(Map filter, UserInfo user) { Map 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 list = productService.selectTypes(); List res = deliveryDetailInfoMapper.selectCityTypeDelivery(params, list); Map totalRow = deliveryDetailInfoMapper.selectAllType(params, list); ArrayList result = new ArrayList<>(res); result.add(totalRow); return result; } }