package com.steerinfo.dil.service.impl; import com.steerinfo.dil.mapper.AmsDispatchSaleOrderMapper; import com.steerinfo.dil.mapper.AmsSaleOrderMaterialMapper; import com.steerinfo.dil.mapper.AmsSaleTrucknoMaterialMapper; import com.steerinfo.dil.model.AmsDispatchSaleOrder; import com.steerinfo.dil.model.AmsSaleOrderMaterial; import com.steerinfo.dil.service.IAmsDispatchSaleOrderService; import com.steerinfo.dil.util.DataChange; import com.steerinfo.dil.util.MapRemoveUtil; import com.steerinfo.framework.mapper.IBaseMapper; import com.steerinfo.framework.service.impl.BaseServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; /** * AmsDispatchSaleOrder服务实现: * @author generator * @version 1.0-SNAPSHORT 2021-09-10 03:59 * 类描述 * 修订历史: * 日期:2021-09-10 * 作者:generator * 参考: * 描述:AmsDispatchSaleOrder服务实现 * @see null * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. */ @Service(value = "amsDispatchSaleOrderService") public class AmsDispatchSaleOrderServiceImpl extends BaseServiceImpl implements IAmsDispatchSaleOrderService { @Autowired private AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper; @Autowired AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper; @Override protected IBaseMapper getMapper() { return amsDispatchSaleOrderMapper; } public List> getOpenDispatchSaleOrder(Map mapValue) { return amsDispatchSaleOrderMapper.getOpenDispatchSaleOrder(mapValue); } /** * 查询最大id * @return */ @Override public BigDecimal selectMaxId() { return amsDispatchSaleOrderMapper.selectOtherId(); } public int insert(AmsDispatchSaleOrder ad) { ad.setDispatchTime(new Date()); ad.setInsertTime(new Date()); ad.setInsertUsername("admin"); return amsDispatchSaleOrderMapper.insertSelective(ad); } /** * 查询app端公开抢单 * @return */ @Override public List> getDispatchSaleOrderList() { List> dispatchSaleOrderList = amsDispatchSaleOrderMapper.getDispatchSaleOrderList(); for (Map map: dispatchSaleOrderList) { Date dispatchDealTime = (Date) map.get("dispatchDealTime"); BigDecimal dispatchId = (BigDecimal) map.get("dispatchId"); String isDeal; if (dispatchDealTime == null) { isDeal = "已成交"; } else { isDeal = "未成交"; } map.put("isDeal",isDeal); // // 先把map中的key-value放到新的saleMap里面 // Map saleMap = new HashMap<>(); // saleMap.putAll(map); // 使用Map清空工具迭代删除map中的所有key-value // MapRemoveUtil.removeMap(map); List> materialMessages = amsDispatchSaleOrderMapper.getMaterialMessages(dispatchId); String allMaterialName = ""; String allMaterialNumber = ""; String allMaterialTheoreticalWeight = ""; String allMaterialSpecificationModel = ""; for (Map materialMap : materialMessages) { if (materialMap != null) { String materialName = (String) materialMap.get("materialName"); allMaterialName += materialName + "/"; String materialTheoreticalWeight = materialMap.get("materialTheoreticalWeight").toString(); if (materialTheoreticalWeight != null) { allMaterialTheoreticalWeight += materialTheoreticalWeight + "/"; } String saleOrderMaterialNumber = materialMap.get("saleOrderMaterialNumber").toString(); allMaterialNumber += saleOrderMaterialNumber + "/"; String specificationModel = materialMap.get("specificationModel").toString(); if (specificationModel != null) { allMaterialSpecificationModel += specificationModel + "/"; } } } String subMaterialName = null; String subMaterialNumber = null; String subMaterialTheoreticalWeight = null; String subMaterialSpecificationModel = null; if (allMaterialName.length() >= 2) { subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 1); } if (allMaterialName.length() < 2) { subMaterialName = allMaterialName; } if (allMaterialNumber.length() >= 2) { subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1); } if (allMaterialNumber.length() < 2) { subMaterialNumber = allMaterialNumber; } if (allMaterialTheoreticalWeight.length() >= 2) { subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 1); } if (allMaterialTheoreticalWeight.length() < 2) { subMaterialTheoreticalWeight = allMaterialTheoreticalWeight; } if (allMaterialSpecificationModel.length() >= 2) { subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 1); } if (allMaterialSpecificationModel.length() < 2) { subMaterialSpecificationModel = allMaterialSpecificationModel; } map.put("allMaterialName",subMaterialName); map.put("allMaterialNumber",subMaterialNumber); map.put("allMaterialTheoreticalWeight",subMaterialTheoreticalWeight); map.put("allMaterialSpecificationModel",subMaterialSpecificationModel); } return dispatchSaleOrderList; } /** * 抢单/接收订单 * @param dispatchId * @param carrierSsoId * @return */ @Override public int lockDispatchSaleOrder(BigDecimal dispatchId, String carrierSsoId) { List> carrierIdList = amsDispatchSaleOrderMapper.getCarrierIdBySSO(carrierSsoId); AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId); amsDispatchSaleOrder.setDispatchDealTime(new Date()); if (carrierIdList != null && carrierIdList.size() == 1) { BigDecimal carrierId = (BigDecimal) carrierIdList.get(0).get("carrierId"); amsDispatchSaleOrder.setCarrierId(carrierId); } amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0)); amsDispatchSaleOrder.setUpdateTime(new Date()); int result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder); return result; } /** * 查询app端已抢的销售订单 * @param carrierId * @return */ @Override public List> getLockDispatchSaleOrderList(Integer carrierId) { List> mapList = amsDispatchSaleOrderMapper.getLockDispatchSaleOrderList(new BigDecimal(carrierId)); if (mapList == null) { return null; } for (Map map : mapList) { BigDecimal dispatchId = (BigDecimal) map.get("dispatchId"); List> orderIdList = amsDispatchSaleOrderMapper.getNullOrNotNull(dispatchId); if (orderIdList != null || orderIdList.size() != 0) { mapList.remove(map); } List> materialMessages = amsDispatchSaleOrderMapper.getMaterialMessages(dispatchId); String allMaterialName = ""; String allMaterialNumber = ""; String allMaterialTheoreticalWeight = ""; String allMaterialSpecificationModel = ""; if (materialMessages != null) { for (Map materialMap : materialMessages) { if (materialMap != null) { String materialName = (String) materialMap.get("materialName"); allMaterialName += materialName + "/"; String materialTheoreticalWeight = materialMap.get("materialTheoreticalWeight").toString(); if (materialTheoreticalWeight != null) { allMaterialTheoreticalWeight += materialTheoreticalWeight + "/"; } String saleOrderMaterialNumber = materialMap.get("saleOrderMaterialNumber").toString(); allMaterialNumber += saleOrderMaterialNumber + "/"; String specificationModel = materialMap.get("specificationModel").toString(); if (specificationModel != null) { allMaterialSpecificationModel += specificationModel + "/"; } } } String subMaterialName = null; String subMaterialNumber = null; String subMaterialTheoreticalWeight = null; String subMaterialSpecificationModel = null; if (allMaterialName.length() >= 2) { subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 1); } if (allMaterialName.length() < 2) { subMaterialName = allMaterialName; } if (allMaterialNumber.length() >= 2) { subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1); } if (allMaterialNumber.length() < 2) { subMaterialNumber = allMaterialNumber; } if (allMaterialTheoreticalWeight.length() >= 2) { subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 1); } if (allMaterialTheoreticalWeight.length() < 2) { subMaterialTheoreticalWeight = allMaterialTheoreticalWeight; } if (allMaterialSpecificationModel.length() >= 2) { subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 1); } if (allMaterialSpecificationModel.length() < 2) { subMaterialSpecificationModel = allMaterialSpecificationModel; } map.put("allMaterialName",subMaterialName); map.put("allMaterialNumber",subMaterialNumber); map.put("allMaterialTheoreticalWeight",subMaterialTheoreticalWeight); map.put("allMaterialSpecificationModel",subMaterialSpecificationModel); } // // 将已经清空的map里面put进一个map和一个list // map.put("materialMessages",materialMessages); // map.put("saleMap",saleMap); else { map.put("allMaterialName",allMaterialName); map.put("allMaterialNumber",allMaterialNumber); map.put("allMaterialTheoreticalWeight",allMaterialTheoreticalWeight); map.put("allMaterialSpecificationModel",allMaterialSpecificationModel); } } return mapList; } /** * 展示pc端司机已经抢到的订单 * @param mapValue * @return */ @Override public List> getLockDispatchSaleOrderListForPc(Map mapValue) { String carrierSsoId = (String) mapValue.get("carrierSsoId"); List> carrierIdList = amsDispatchSaleOrderMapper.getCarrierIdBySSO(carrierSsoId); if (carrierIdList != null && carrierIdList.size() == 1) { BigDecimal carrierId = (BigDecimal) carrierIdList.get(0).get("carrierId"); mapValue.put("carrierId", carrierId); } else { mapValue.put("carrierId",null); } List> mapList = amsDispatchSaleOrderMapper.getLockDispatchSaleOrderListForPc(mapValue); if (mapList == null) { return null; } for (Map map : mapList) { BigDecimal dispatchId = (BigDecimal) map.get("dispatchId"); BigDecimal orderId = (BigDecimal) map.get("orderId"); if (orderId == null) { List> materialMessages = amsDispatchSaleOrderMapper.getMaterialMessages(dispatchId); String allMaterialName = ""; String allMaterialNumber = ""; String allMaterialTheoreticalWeight = ""; String allMaterialSpecificationModel = ""; if (materialMessages != null) { for (Map materialMap : materialMessages) { if (materialMap != null) { String materialName = (String) materialMap.get("materialName"); allMaterialName += materialName + "/"; BigDecimal materialTheoreticalWeight = (BigDecimal) materialMap.get("materialTheoreticalWeight"); if (materialTheoreticalWeight != null) { allMaterialTheoreticalWeight += materialTheoreticalWeight + "/"; } BigDecimal saleOrderMaterialNumber = (BigDecimal) materialMap.get("saleOrderMaterialNumber"); allMaterialNumber += saleOrderMaterialNumber + "/"; String specificationModel = (String) materialMap.get("specificationModel"); if (specificationModel != null) { allMaterialSpecificationModel += specificationModel + "/"; } } } String subMaterialName = null; String subMaterialNumber = null; String subMaterialTheoreticalWeight = null; String subMaterialSpecificationModel = null; if (allMaterialName.length() >= 2) { subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 1); } if (allMaterialName.length() < 2) { subMaterialName = allMaterialName; } if (allMaterialNumber.length() >= 2) { subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1); } if (allMaterialNumber.length() < 2) { subMaterialNumber = allMaterialNumber; } if (allMaterialTheoreticalWeight.length() >= 2) { subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 1); } if (allMaterialTheoreticalWeight.length() < 2) { subMaterialTheoreticalWeight = allMaterialTheoreticalWeight; } if (allMaterialSpecificationModel.length() >= 2) { subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 1); } if (allMaterialSpecificationModel.length() < 2) { subMaterialSpecificationModel = allMaterialSpecificationModel; } map.put("allMaterialName", subMaterialName); map.put("allMaterialNumber", subMaterialNumber); map.put("allMaterialTheoreticalWeight", subMaterialTheoreticalWeight); map.put("allMaterialSpecificationModel", subMaterialSpecificationModel); } // // 将已经清空的map里面put进一个map和一个list // map.put("materialMessages",materialMessages); // map.put("saleMap",saleMap); else { map.put("allMaterialName", allMaterialName); map.put("allMaterialNumber", allMaterialNumber); map.put("allMaterialTheoreticalWeight", allMaterialTheoreticalWeight); map.put("allMaterialSpecificationModel", allMaterialSpecificationModel); } } } return mapList; } /** * 查询PC端公开抢单 * @param mapValue * @return */ @Override public List> getPCDispatchSaleOrderList(Map mapValue) { String carrierSsoId = (String) mapValue.get("carrierSsoId"); List> carrierIdList = amsDispatchSaleOrderMapper.getCarrierIdBySSO(carrierSsoId); if (carrierIdList != null && carrierIdList.size() == 1) { BigDecimal carrierId = (BigDecimal) carrierIdList.get(0).get("carrierId"); mapValue.put("carrierId", carrierId); } else { mapValue.put("carrierId",null); } List> dispatchSaleOrderList = amsDispatchSaleOrderMapper.getPCDispatchSaleOrderList(mapValue); for (Map map: dispatchSaleOrderList) { // Date dispatchDealTime = (Date) map.get("dispatchDealTime"); BigDecimal dispatchId = (BigDecimal) map.get("dispatchId"); // String isDeal; // if (dispatchDealTime == null) { // isDeal = "已成交"; // } // else { // isDeal = "未成交"; // } // map.put("isDeal",isDeal); // // 先把map中的key-value放到新的saleMap里面 // Map saleMap = new HashMap<>(); // saleMap.putAll(map); // 使用Map清空工具迭代删除map中的所有key-value // MapRemoveUtil.removeMap(map); List> materialMessages = amsDispatchSaleOrderMapper.getMaterialMessages(dispatchId); String allMaterialName = ""; String allMaterialNumber = ""; String allMaterialTheoreticalWeight = ""; String allMaterialSpecificationModel = ""; for (Map materialMap : materialMessages) { if (materialMap != null) { String materialName = (String) materialMap.get("materialName"); allMaterialName += materialName + "/"; BigDecimal materialTheoreticalWeight = (BigDecimal)materialMap.get("materialTheoreticalWeight"); if (materialTheoreticalWeight != null) { allMaterialTheoreticalWeight += materialTheoreticalWeight + "/"; } BigDecimal saleOrderMaterialNumber = (BigDecimal) materialMap.get("saleOrderMaterialNumber"); allMaterialNumber += saleOrderMaterialNumber + "/"; String specificationModel = (String) materialMap.get("specificationModel"); if (specificationModel != null) { allMaterialSpecificationModel += specificationModel + "/"; } } } String subMaterialName = null; String subMaterialNumber = null; String subMaterialTheoreticalWeight = null; String subMaterialSpecificationModel = null; if (allMaterialName.length() >= 2) { subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 1); } if (allMaterialName.length() < 2) { subMaterialName = allMaterialName; } if (allMaterialNumber.length() >= 2) { subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1); } if (allMaterialNumber.length() < 2) { subMaterialNumber = allMaterialNumber; } if (allMaterialTheoreticalWeight.length() >= 2) { subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 1); } if (allMaterialTheoreticalWeight.length() < 2) { subMaterialTheoreticalWeight = allMaterialTheoreticalWeight; } if (allMaterialSpecificationModel.length() >= 2) { subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 1); } if (allMaterialSpecificationModel.length() < 2) { subMaterialSpecificationModel = allMaterialSpecificationModel; } map.put("allMaterialName",subMaterialName); map.put("allMaterialNumber",subMaterialNumber); map.put("allMaterialTheoreticalWeight",subMaterialTheoreticalWeight); map.put("allMaterialSpecificationModel",subMaterialSpecificationModel); } return dispatchSaleOrderList; } /** * 接收定向派单 * @param dispatchId * @return */ @Override public int receiveDispatchOrder(BigDecimal dispatchId) { return 0; } /** * 销售新增定向派单且直接下发 * @param mapValue * @return */ @Transactional @Override public int addDispatchSaleOrder(Map mapValue) { int result = 0; List> mapList = (List>) mapValue.get("mapList"); // 承运商id BigDecimal carrierId = DataChange.dataToBigDecimal(mapValue.get("carrierId")); for (Map map : mapList) { // 车序号表id BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")); AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder(); amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId()); amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId); amsDispatchSaleOrder.setCarrierId(carrierId); amsDispatchSaleOrder.setDispatchTime(new Date()); // 设置为定向派单 amsDispatchSaleOrder.setDispatchType(new BigDecimal(0)); amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0)); amsDispatchSaleOrder.setInsertTime(new Date()); amsDispatchSaleOrder.setInsertUsername("admin"); amsDispatchSaleOrder.setInsertUpdateRemark("无"); // 将车序号表改为已选承运商状态 AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial(); amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId); amsSaleOrderMaterial.setIssueStatus(new BigDecimal(2)); result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder); result += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial); } return result; } /** * 展示销售派单物资信息 * @param dispatchId * @return */ @Override public List> getDispatchMaterialList(BigDecimal dispatchId) { List> mapList = amsDispatchSaleOrderMapper.getDispatchMaterialList(dispatchId); return mapList; } /** * 批量接收定向派单 * @param mapValue * @return */ @Override public int lockDispatchSaleOrderList(Map mapValue) { String carrierSsoId = (String) mapValue.get("carrierSsoId"); List> carrierIdList = amsDispatchSaleOrderMapper.getCarrierIdBySSO(carrierSsoId); BigDecimal carrierId = null; if (carrierIdList != null && carrierIdList.size() == 1) { carrierId = (BigDecimal) carrierIdList.get(0).get("carrierId"); } int result = 0; List> mapList = (List>) mapValue.get("mapList"); for (Map map : mapList) { AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder(); BigDecimal dispatchId = DataChange.dataToBigDecimal(map.get("dispatchId")); amsDispatchSaleOrder.setDispatchId(dispatchId); if (carrierId != null) { amsDispatchSaleOrder.setCarrierId(carrierId); } amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0)); amsDispatchSaleOrder.setUpdateTime(new Date()); amsDispatchSaleOrder.setDispatchDealTime(new Date()); result += amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder); } return result; } }