|
@@ -7,6 +7,7 @@ import com.steerinfo.dil.mapper.*;
|
|
|
import com.steerinfo.dil.model.*;
|
|
|
import com.steerinfo.dil.service.IAmsSaleOrderService;
|
|
|
import com.steerinfo.dil.util.DataChange;
|
|
|
+import com.steerinfo.dil.util.EASDeleteUtil;
|
|
|
import com.steerinfo.dil.util.EASUtil;
|
|
|
import com.steerinfo.dil.util.NumberToWeightUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -61,6 +62,8 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
TmsTruckFeign tmsTruckFeign;
|
|
|
@Autowired
|
|
|
EASUtil easUtil;
|
|
|
+ @Autowired
|
|
|
+ EASDeleteUtil easDeleteUtil;
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getSaleOrderInfo(Map<String, Object> map) {
|
|
@@ -201,6 +204,8 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
|
|
|
// 调用金蝶接口,将销售订单推送到金蝶系统
|
|
|
Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
|
|
|
+ Map<String, Object> head = (Map<String, Object>) input.get("head");
|
|
|
+ head.put("status","");
|
|
|
// 获得金蝶接口配置
|
|
|
Map<String, Object> totalMap = easUtil.getTotalMap();
|
|
|
// 组装报文
|
|
@@ -904,16 +909,40 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
+ * 同步金蝶删除
|
|
|
* @param saleOrderId
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public int deleteSaleOrderById(BigDecimal saleOrderId) {
|
|
|
+ int result = 0;
|
|
|
AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
|
|
|
amsSaleOrder.setSaleOrderId(saleOrderId);
|
|
|
amsSaleOrder.setDeleted(new BigDecimal(1));
|
|
|
- int result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
|
|
|
+ // 如果是已经上传金蝶的销售订单,则同步删除
|
|
|
+ AmsSaleOrder amsSaleOrder1 = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
|
|
|
+ if (amsSaleOrder1.getSaleOrderStatus().intValue() == 2 || amsSaleOrder1.getSaleOrderStatus().intValue() == 4) {
|
|
|
+ Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
|
|
|
+ Map<String, Object> head = (Map<String, Object>) input.get("head");
|
|
|
+ head.put("status","close");
|
|
|
+ // 获得金蝶接口配置
|
|
|
+ Map<String, Object> totalMap = easUtil.getTotalMap();
|
|
|
+ // 组装报文
|
|
|
+ totalMap.put("input",input);
|
|
|
+ System.out.println(totalMap);
|
|
|
+ String json = JSONUtils.toJSONString(totalMap);
|
|
|
+ System.out.println(json);
|
|
|
+ String s = joinFeign.pushSaleOrderToEas(totalMap);
|
|
|
+ System.out.println(s);
|
|
|
+ }
|
|
|
+ // 如果是副产品订单则关闭时同步关闭未进厂的运单
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("saleOrderId",saleOrderId);
|
|
|
+ List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(map);
|
|
|
+ if (amsSaleMaterials != null && amsSaleMaterials.get(0).getSaleWarehouse().equals("副产品库")) {
|
|
|
+ result += amsSaleOrderMapper.closeOrderNotIn(saleOrderId);
|
|
|
+ }
|
|
|
+ result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -1200,6 +1229,96 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
return amsSaleOrderMapper.getCokeInwardOrderList(mapValue);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 修改收货地址
|
|
|
+ * @param mapValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int updateCarAddress(Map<String, Object> mapValue) {
|
|
|
+ // 判断是否需要删除金蝶分录
|
|
|
+ Integer isCloseEas = (Integer) mapValue.get("isCloseEas");
|
|
|
+ // 判断是否需要修改派车
|
|
|
+ Object isNewCar = mapValue.get("isNewCar");
|
|
|
+ // 销售订单主键
|
|
|
+ BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId"));
|
|
|
+ // 车序号id
|
|
|
+ BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId"));
|
|
|
+ int result = 0;
|
|
|
+ // 运输订单id
|
|
|
+ BigDecimal orderId = DataChange.dataToBigDecimal(mapValue.get("orderId"));
|
|
|
+ // 是
|
|
|
+ if (isCloseEas == 0 && orderId != null && orderId.intValue() != 0) {
|
|
|
+ OmstruckOrder omstruckOrder = new OmstruckOrder();
|
|
|
+ omstruckOrder.setOrderId(orderId);
|
|
|
+ omstruckOrder.setOrderStatus(new BigDecimal(7));
|
|
|
+ omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
|
|
|
+ // 得到销售订单物资表主键
|
|
|
+ List<Map<String,Object>> saleMaterialIdList = amsSaleOrderMapper.getSaleMaterialId();
|
|
|
+ for (Map<String, Object> map : saleMaterialIdList) {
|
|
|
+ // 删除销售订单物资子表
|
|
|
+ BigDecimal saleMaterialId = (BigDecimal) map.get("saleMaterialId");
|
|
|
+ amsSaleMaterialMapper.deleteByPrimaryKey(saleMaterialId);
|
|
|
+ }
|
|
|
+ // 调用金蝶接口,将销售订单推送到金蝶系统
|
|
|
+ Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
|
|
|
+ Map<String, Object> head = (Map<String, Object>) input.get("head");
|
|
|
+ head.put("status","update");
|
|
|
+ // 获得金蝶接口配置
|
|
|
+ Map<String, Object> totalMap = easUtil.getTotalMap();
|
|
|
+ // 组装报文
|
|
|
+ totalMap.put("input",input);
|
|
|
+ System.out.println(totalMap);
|
|
|
+ String json = JSONUtils.toJSONString(totalMap);
|
|
|
+ System.out.println(json);
|
|
|
+ String s = joinFeign.pushSaleOrderToEas(totalMap);
|
|
|
+ System.out.println(s);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ // 省市县ID
|
|
|
+ BigDecimal shippingAddressId = DataChange.dataToBigDecimal(mapValue.get("shipperAddressId"));
|
|
|
+ // 具体地址
|
|
|
+ String place = (String) mapValue.get("place");
|
|
|
+ AmsSaleOrderMaterial amsSaleOrderMaterial = amsSaleOrderMaterialMapper.selectByPrimaryKey(saleOrderMaterialId);
|
|
|
+ if (place != null && !"null".equals(place)) {
|
|
|
+ List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
|
|
|
+ if (placeIdList == null || placeIdList.size() == 0) {
|
|
|
+ RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
|
|
|
+ rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
|
|
|
+ rmsReceivePlace.setAddressId(shippingAddressId);
|
|
|
+ rmsReceivePlace.setAddressDeliveryAddress(place);
|
|
|
+ amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
|
|
|
+ rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
|
|
|
+ } else {
|
|
|
+ amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ result += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
|
|
|
+ // 需要换车
|
|
|
+ if ((Integer) isNewCar == 0) {
|
|
|
+ // 根据车序号得到定向派单表主键
|
|
|
+ BigDecimal dispatchId = amsSaleOrderMapper.getDispatchId(saleOrderMaterialId);
|
|
|
+ if (dispatchId != null) {
|
|
|
+ amsDispatchSaleOrderMapper.deleteByPrimaryKey(dispatchId);
|
|
|
+ }
|
|
|
+ if (amsSaleOrderMaterial.getSaleShippingAddressId() != null) {
|
|
|
+ // 自动匹配承运商
|
|
|
+ List<Map<String, Object>> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId());
|
|
|
+ // 单一承运商才进行匹配
|
|
|
+ if (carrierList != null && carrierList.size() == 1) {
|
|
|
+ List<Map<String, Object>> list = new ArrayList<>();
|
|
|
+ Map<String, Object> map1 = carrierList.get(0);
|
|
|
+ // 传入车序号主键和承运商id
|
|
|
+ map1.put("saleOrderMaterialId", saleOrderMaterialId);
|
|
|
+ map1.put("carrierId", map1.get("value"));
|
|
|
+ list.add(map1);
|
|
|
+ dispatchToCarrier(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 展示未匹配承运商的车序号
|
|
|
* @param mapValue
|
|
@@ -1251,5 +1370,198 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
return resultList;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 修改销售订单中的物资
|
|
|
+ * @param mapValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int updateAllMaterialInSale(Map<String, Object> mapValue) {
|
|
|
+ int result = 0;
|
|
|
+ // 得到销售订单主键
|
|
|
+ BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId"));
|
|
|
+ BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId"));
|
|
|
+ BigDecimal orderId = DataChange.dataToBigDecimal(mapValue.get("orderId"));
|
|
|
+ // 得到运单中的物资
|
|
|
+ List<Map<String, Object>> oldList = omstruckOrderMaterialMapper.getMaterialList(orderId);
|
|
|
+ Map<String, Object> toTmsMap = new HashMap<>();
|
|
|
+ Map<String, Object> truckNoMap = new HashMap<>();
|
|
|
+ truckNoMap.put("saleOrderMaterialId",saleOrderMaterialId);
|
|
|
+ toTmsMap.put("orderId", orderId);
|
|
|
+ toTmsMap.put("oldList", oldList);
|
|
|
+ // 得到所有的物资
|
|
|
+ List<Map<String, Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
|
|
|
+ /*
|
|
|
+ 删除三个物资表数据
|
|
|
+ */
|
|
|
+ List<AmsSaleTrucknoMaterial> amsSaleTrucknoMaterials = amsSaleTrucknoMaterialMapper.selectByParameters(truckNoMap);
|
|
|
+ for (AmsSaleTrucknoMaterial amsSaleTrucknoMaterial : amsSaleTrucknoMaterials) {
|
|
|
+ // 销售订单物资子表
|
|
|
+ amsSaleMaterialMapper.deleteByPrimaryKey(amsSaleTrucknoMaterial.getMaterialId());
|
|
|
+ // 车序号子表
|
|
|
+ amsSaleTrucknoMaterialMapper.deleteByPrimaryKey(amsSaleTrucknoMaterial.getTrucknoMaterialId());
|
|
|
+ }
|
|
|
+ // 运输订单物资子表
|
|
|
+
|
|
|
+ // 新增拼数/修改拼数
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
+ BigDecimal saleMaterialId = DataChange.dataToBigDecimal(map.get("saleMaterialId"));
|
|
|
+ BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
|
|
|
+ BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
|
|
|
+ BigDecimal trucknoMaterialId = DataChange.dataToBigDecimal(map.get("trucknoMaterialId"));
|
|
|
+ BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPound"));
|
|
|
+ Object steelMeter = map.get("meterNumber");
|
|
|
+ Object easId = map.get("easId");
|
|
|
+ Object warehouse = map.get("warehouse");
|
|
|
+ // 销售订单分录表
|
|
|
+ AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
|
|
|
+ // 车序号子表
|
|
|
+ AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
|
|
|
+ // 运输订单子表
|
|
|
+ OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
|
|
|
+// // 判断是否要新增运输订单子表
|
|
|
+// Map<String, Object> orderMap = new HashMap<>();
|
|
|
+// orderMap.put("orderId", orderId);
|
|
|
+// orderMap.put("materialId", materialId);
|
|
|
+// List<OmstruckOrderMaterial> omstruckOrderMaterials = omstruckOrderMaterialMapper.selectByParameters(orderMap);
|
|
|
+// BigDecimal orderMaterialId;
|
|
|
+// if (omstruckOrderMaterials == null || omstruckOrderMaterials.size() == 0) {
|
|
|
+// orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
|
|
|
+// omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
|
|
|
+// omstruckOrderMaterial.setOrderId(orderId);
|
|
|
+// omstruckOrderMaterial.setInsertTime(new Date());
|
|
|
+// omstruckOrderMaterial.setInsertUsername("新增拼数");
|
|
|
+// } else {
|
|
|
+// omstruckOrderMaterial = omstruckOrderMaterials.get(0);
|
|
|
+// }
|
|
|
+// omstruckOrderMaterial.setMaterialId(materialId);
|
|
|
+// omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
|
|
|
+// omstruckOrderMaterial.setUpdateTime(new Date());
|
|
|
+// if (omstruckOrderMaterials == null || omstruckOrderMaterials.size() == 0) {
|
|
|
+// result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
|
|
|
+// } else {
|
|
|
+// result += omstruckOrderMaterialMapper.updateByPrimaryKeySelective(omstruckOrderMaterial);
|
|
|
+// }
|
|
|
+// // 判断是否是新增的拼数
|
|
|
+// if (saleMaterialId == null || saleMaterialId.intValue() == 0) {
|
|
|
+// saleMaterialId = amsSaleMaterialMapper.selectMaxId();
|
|
|
+// trucknoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
|
|
|
+// amsSaleMaterial.setInsertTime(new Date());
|
|
|
+// amsSaleMaterial.setInsertUsername("修改时加拼数");
|
|
|
+// amsSaleTrucknoMaterial.setInsertTime(new Date());
|
|
|
+// amsSaleTrucknoMaterial.setInsertUsername("修改时加拼数");
|
|
|
+// }
|
|
|
+// // 车序号子表
|
|
|
+// amsSaleTrucknoMaterial.setTrucknoMaterialId(trucknoMaterialId);
|
|
|
+// amsSaleTrucknoMaterial.setMaterialId(saleMaterialId);
|
|
|
+// amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
+// amsSaleTrucknoMaterial.setUpdateTime(new Date());
|
|
|
+// // 销售订单物资表
|
|
|
+// amsSaleMaterial.setSaleMaterialId(saleMaterialId);
|
|
|
+// amsSaleMaterial.setMaterialNumber(materialNumber);
|
|
|
+// amsSaleMaterial.setSaleOrderId(saleOrderId);
|
|
|
+// amsSaleMaterial.setMaterialId(materialId);
|
|
|
+// amsSaleMaterial.setIsPoundSale(isPoundSale);
|
|
|
+// amsSaleMaterial.setUpdateTime(new Date());
|
|
|
+// if (steelMeter != null) {
|
|
|
+// amsSaleMaterial.setSteelMeter(new BigDecimal(steelMeter.toString()));
|
|
|
+// }
|
|
|
+// if (map.get("saleOrderId") == null) {
|
|
|
+// result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
|
|
|
+// result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
|
|
|
+// } else {
|
|
|
+// result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
|
|
|
+// result += amsSaleTrucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial);
|
|
|
+// }
|
|
|
+ }
|
|
|
+ // 得到运单中的物资
|
|
|
+ List<Map<String, Object>> newList = omstruckOrderMaterialMapper.getMaterialList(orderId);
|
|
|
+ toTmsMap.put("newList", newList);
|
|
|
+ // 调用金蝶接口,将销售订单推送到金蝶系统
|
|
|
+ Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
|
|
|
+ Map<String, Object> head = (Map<String, Object>) input.get("head");
|
|
|
+ head.put("status", "update");
|
|
|
+ // 获得金蝶接口配置
|
|
|
+ Map<String, Object> totalMap = easUtil.getTotalMap();
|
|
|
+ // 组装报文
|
|
|
+ totalMap.put("input", input);
|
|
|
+ System.out.println(totalMap);
|
|
|
+ String json = JSONUtils.toJSONString(totalMap);
|
|
|
+ System.out.println(json);
|
|
|
+ String s = joinFeign.pushSaleOrderToEas(totalMap);
|
|
|
+ System.out.println(s);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 遍历两次物资集合,找出哪些修改哪些新增哪些删除的物资
|
|
|
+ * @param newMaterialMapList
|
|
|
+ * @param oldMaterialMapList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, Object> checkMaterial(List<Map<String, Object>> oldMaterialMapList, List<Map<String, Object>> newMaterialMapList){
|
|
|
+ Map<String, Object> returnMap = new HashMap<>();
|
|
|
+ List<BigDecimal> delete = new ArrayList<>(); //存放删除的物资ID
|
|
|
+ List<Map<String, Object>> add = new ArrayList<>(); //存放添加的物资ID及件数
|
|
|
+ List<Map<String, Object>> update = new ArrayList<>(); // 存放修改的物资Id及件数
|
|
|
+ //先遍历old中的物资 查找有没有相同的物资 找到修改和删除的物资
|
|
|
+ for (Map<String, Object> map : oldMaterialMapList) {
|
|
|
+ String materialId = String.valueOf(map.get("materialId"));//拿到key
|
|
|
+ //通过这个key去新物资集合中获取是否包含这个key
|
|
|
+ Map<String, Object> newMap = getNewMap(materialId, newMaterialMapList);
|
|
|
+ if(newMap == null){
|
|
|
+ //如果在新物资中没有找到,则代表此物资已删除
|
|
|
+ delete.add(DataChange.dataToBigDecimal(map.get("materialId")));
|
|
|
+ }else{ //如果找到了,取出件数进行对比
|
|
|
+ BigDecimal newNumber = DataChange.dataToBigDecimal(newMap.get("materialNumber")); //拿到新物资中的件数
|
|
|
+ BigDecimal oldNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
|
|
|
+ int i = newNumber.compareTo(oldNumber);
|
|
|
+ if(i != 0){ //如果件数不相等,则需要进行修改,添加进修改list中
|
|
|
+ Map<String, Object> updateMap = new HashMap<>();
|
|
|
+ updateMap.put("materialId", materialId);
|
|
|
+ updateMap.put("materialNumber", newNumber);
|
|
|
+ update.add(updateMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //再次遍历new中的物资 查找 新增 的物资
|
|
|
+ for (Map<String, Object> map : newMaterialMapList) {
|
|
|
+ String materialId = String.valueOf(map.get("materialId"));
|
|
|
+ Map<String, Object> oldMaps = getNewMap(materialId, oldMaterialMapList);
|
|
|
+ if(oldMaps == null){
|
|
|
+ //如果在旧map中没有找到,则代表是新增的物资,将新增的物资存放到新增列表中
|
|
|
+ add.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(add.size() != 0) returnMap.put("add", add);
|
|
|
+ if(delete.size() != 0) returnMap.put("delete", delete);
|
|
|
+ if(update.size() != 0) returnMap.put("update", update);
|
|
|
+ return returnMap;
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 遍历list查看里面的map是否包含这个值
|
|
|
+ * @param key
|
|
|
+ * @param mapList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, Object> getNewMap(String key, List<Map<String, Object>> mapList){
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
+ if(map.containsValue(key)){
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 副产品订单
|
|
|
+ * @param map
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getFuSaleOrderList(Map<String, Object> map) {
|
|
|
+ List<Map<String, Object>> resultList = amsSaleOrderMapper.getFuSaleOrderList(map);
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
}
|