@@ -1041,6 +1041,9 @@ public class AmsSaleOrderController<RedisTemplate> extends BaseRESTfulController
@PostMapping("/updateTruckNoCarrier")
public RESTfulResult updateTruckNoCarrier(@RequestBody Map<String,Object> mapValue) {
int result = amsSaleOrderService.updateTruckNoCarrier(mapValue);
+ if (mapValue.containsKey("oYeFlag")) {
+ return success(result);
+ }
try {
List<Map<String,Object>> mapList = new ArrayList<>();
mapList.add(mapValue);
@@ -1383,6 +1386,7 @@ public class AmsSaleOrderController<RedisTemplate> extends BaseRESTfulController
Map<String, Object> result = new HashMap<>();
try{
result = amsSaleOrderService.updateCapacityNumberInFactory(mapValue);
+
}catch (Exception e){
e.printStackTrace();
if(e.getMessage()==null || e.getMessage().contains("Exception")){
@@ -0,0 +1,144 @@
+package com.steerinfo.dil.controller;
+import com.alibaba.fastjson.JSONObject;
+import com.steerinfo.dil.mapper.RmsReceivePlaceMapper;
+import com.steerinfo.dil.model.RmsReceivePlace;
+import com.steerinfo.dil.service.impl.OyeWarehouseServiceImpl;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.ColumnDataUtil;
+import com.steerinfo.dil.util.DataChange;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+@RestController
+@RequestMapping("/${api.version}/OyeWarehouse")
+public class OyeWarehouseController extends BaseRESTfulController {
+ private final SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ @Resource
+ RmsReceivePlaceMapper rmsReceivePlaceMapper;
+ ColumnDataUtil columnDataUtil;
+ OyeWarehouseServiceImpl oyeWarehouseService;
+ @ApiOperation("新增欧冶具体库房")
+ @PostMapping("/insertOyeWarehouse")
+ public RESTfulResult insertOyeWarehouse(@RequestBody Map<String,Object> map) {
+ RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
+ rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
+ rmsReceivePlace.setAddressId(new BigDecimal(3));
+ rmsReceivePlace.setAddressDeliveryAddress(map.get("warehouseName").toString());
+ rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
+ return success("新增成功");
+ @ApiOperation("查询欧冶库具体库房信息")
+ @PostMapping("getOyeWarehouse")
+ public RESTfulResult getOyeWarehouse(@RequestBody(required = false) Map<String,Object> mapValue,
+ Integer pageNum,
+ Integer pageSize,
+ Integer apiId) {
+ PageHelper.startPage(pageNum,pageSize);
+ //分页数据
+ List<Map<String, Object>> mapList = rmsReceivePlaceMapper.getOyeWarehouse(mapValue);
+ PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,mapList);
+ return success(pageList);
+ @ApiModelProperty(value = "新增欧冶转运计划")
+ @PostMapping("/addTransPlan")
+ public RESTfulResult addTransPlan(@RequestBody Map<String,Object> mapValue){
+ JSONObject jsonObject = new JSONObject(mapValue);
+ System.out.println(new Date() + "=======================");
+ System.out.println(jsonObject);
+ try {
+ // 成功
+ int result = oyeWarehouseService.addTransPlan(mapValue);
+ } catch (Exception e) {
+ // 失败
+ return failed(e.getMessage());
+ @ApiOperation("批量新增欧冶转运计划")
+ @PostMapping("addTransPlanList")
+ @Transactional(rollbackFor = Exception.class)
+ public RESTfulResult addTransPlanList(@RequestBody List<Map<String,Object>> mapList) throws Exception {
+ int count = 0;
+ String saleOrderNo = null;
+ System.out.println("------新增欧冶转运计划Excel导入-----" + new Date());
+ Map<String, Object> logMap = new HashMap<>();
+ logMap.put("mapList",mapList);
+ JSONObject jsonObject = new JSONObject(logMap);
+ }catch (Exception e){
+ e.printStackTrace();
+ System.out.println("------销售订单批量导入Excel导入-----" + new Date());
+ for (Map<String,Object> map:mapList
+ ) {
+ saleOrderNo = map.get("saleOrderNo").toString();
+ count++;
+ oyeWarehouseService.addTransPlan(map);
+ System.out.println(e);
+ throw new Exception("销售订单编号为:" + saleOrderNo + e.getMessage());
+ return success(count);
+ @ApiOperation("查询转运计划")
+ @PostMapping("/getTransPlan")
+ public RESTfulResult getTransPlan(@RequestBody(required=false) Map<String,Object> mapValue,
+ Integer apiId,
+ String startTime,
+ String endTime){
+ DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);//根据时间段查询数据
+ List<Map<String, Object>> mapList = oyeWarehouseService.getTransPlan(mapValue);
+ PageListAdd pageList = columnDataUtil.tableColumnData5(apiId, null,mapList);
+ @ApiOperation("审核转运计划")
+ @PostMapping("approveTransPlan")
+ public RESTfulResult approveTransPlan(@RequestBody Map<String,Object> map) {
+ int i = oyeWarehouseService.approveTransPlan(map);
+ return success();
+}
@@ -52,4 +52,10 @@ public interface AmsSaleMaterialMapper extends IBaseMapper<AmsSaleMaterial, BigD
int getSaleMaterialDeleteBySaleMaterialId(BigDecimal saleMaterialId);
+ List<BigDecimal> getRealTimeInventory(Map<String, Object> searchMap);
+ BigDecimal getRealTimeUnloadNumber(BigDecimal inventoryId);
+ BigDecimal getRealTimeMaterialNumber(BigDecimal inventoryId);
}
@@ -229,4 +229,15 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
int getTransOrderIds();
+ BigDecimal findReceiveIdByOye(Object receiveName);
+ List<Map<String, Object>> getTransPlan(Map<String, Object> mapValue);
+ int approveTransPlan(Map<String, Object> approveMap);
+ String selectPlaceRemark(String place);
+ String getPlaceAddress(BigDecimal saleOrderMaterialId);
@@ -2,12 +2,13 @@ package com.steerinfo.dil.mapper;
import com.steerinfo.dil.model.RmsReceivePlace;
import com.steerinfo.framework.mapper.IBaseMapper;
-import java.math.*;
-import java.util.Map;
-
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface RmsReceivePlaceMapper extends IBaseMapper<RmsReceivePlace, BigDecimal> {
// 得到具体地址主键id
@@ -15,4 +16,9 @@ public interface RmsReceivePlaceMapper extends IBaseMapper<RmsReceivePlace, BigD
@Select("select seq_RMS_RECEIVE_PLACE.nextval from dual")
BigDecimal selectMaxId();
+ List<Map<String, Object>> getOyeWarehouse(Map<String, Object> mapValue);
+ String getAddressType(BigDecimal shippingAddressId);
@@ -0,0 +1,4 @@
+package com.steerinfo.dil.service;
+public interface IOyeWarehouseService {
@@ -11,7 +11,6 @@ import com.steerinfo.dil.util.*;
import com.steerinfo.framework.utils.base.StringUtils;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -723,8 +722,12 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
String truckRemark = (String) (map.get("truckRemark"));
String place = (String) (map.get("place"));
if (place != null && !"null".equals(place)) {
+ String addressType = rmsReceivePlaceMapper.getAddressType(shippingAddressId);
List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
if (placeIdList == null || placeIdList.size() == 0) {
+ if ("厂外库".equals(addressType)) {
+ throw new Exception("您输入的具体库房名称,不存在!请去维护");
RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
rmsReceivePlace.setAddressId(shippingAddressId);
@@ -755,10 +758,16 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
if (isSelfMention.equals("是")) {
+ BigDecimal carrierId = null;
// 根据收货单位id查询出收货单位名称
- String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
+ if (place != null && place.contains("欧冶")) {
+ String placeRemark = amsSaleOrderMapper.selectPlaceRemark(place);
+ carrierId = amsSaleOrderMapper.selectCarrierId(placeRemark);
+ }else{
+ String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
+ carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
// 根据收货单位名称查询承运商id
- BigDecimal carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
List<Map<String, Object>> list = new ArrayList<>();
Map<String,Object> map1 = new HashMap<>();
// 传入车序号主键和承运商id
@@ -941,7 +950,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
//判断该车序号对应的分录是否全部关闭
Integer flCount = amsSaleMaterialMapper.getAbleFlcount(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
if(flCount == 0 && !"取消".equals(stringObjectMap.get("capacityNumber")) && !"待定".equals(stringObjectMap.get("capacityNumber"))) {
throw new Exception("该运单下所有分录被关闭,无法派车");
if (orderMap != null) {
@@ -987,8 +995,23 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
if(amsSaleOrderMapper.isBlackList(capacityNumber)>0){
throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
+ // 得到车序号表主键
+ BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
+ //判断是欧冶
+ String placeAddress = amsSaleOrderMapper.getPlaceAddress(saleOrderMaterialId);
+ if (placeAddress != null && placeAddress.contains("欧冶")) {
+ Map<String,Object> data=null;
+ try{
+ data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNumber).getData();
+ throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
+ if(data==null || !"1001".equals(""+data.get("status"))){
//非自提,单次校验且全局校验,且车不允许无GPS
- int isGPS=amsSaleOrderMapper.isGPS(capacityNumber);
+ int isGPS = amsSaleOrderMapper.isGPS(capacityNumber);
if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
Map<String,Object> data=null;
@@ -1001,9 +1024,10 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
//校验结束,上传金蝶
- pushCarNumberToEas(map);
- // 得到车序号表主键
- BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
+ if(!map.containsKey("oYeFlag")) {
+ pushCarNumberToEas(map);
// 得到承运商
BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
// 查询到车序号的单价
@@ -2255,6 +2279,18 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
if(amsSaleOrderMapper.isBlackList(capacityNo)>0){
+ String placeAddress = amsSaleOrderMapper.getPlaceAddress(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
+ data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNo).getData();
//非自提,单次校验且全局校验,且车辆不允许无GPS
int isGPS=amsSaleOrderMapper.isGPS(capacityNo);
@@ -2268,7 +2304,9 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
- pushCarNumberToEas(mapValue);
+ if(!mapValue.containsKey("oYeFlag")) {
+ pushCarNumberToEas(mapValue);
//try{
// //不为空且为新手机号,则修改电话号码
// if(driverTel!=null && !"".equals(driverTel) && !driverTel.equals(tel)){
@@ -3241,7 +3279,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
@ApiOperation("定时获取制单日期")
- @Scheduled(fixedRate = 20 * 60 * 1000)
+ //@Scheduled(fixedRate = 20 * 60 * 1000)
public void getMakeDateTime() {
Map<String, Object> Map = new HashMap<>();
getEasPrimaryIds(Map);
@@ -0,0 +1,378 @@
+package com.steerinfo.dil.service.impl;
+import com.steerinfo.dil.feign.*;
+import com.steerinfo.dil.mapper.*;
+import com.steerinfo.dil.model.*;
+import com.steerinfo.dil.service.IOyeWarehouseService;
+import com.steerinfo.dil.util.SaleLogUtil;
+import org.springframework.stereotype.Service;
+import java.util.*;
+@Service
+public class OyeWarehouseServiceImpl implements IOyeWarehouseService {
+ private AmsSaleOrderMapper amsSaleOrderMapper;
+ private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
+ private AmsSaleOrderServiceImpl amsSaleOrderService;
+ private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper;
+ TmstruckLoadResult tmstruckLoadResult;
+ TmstruckWeightResult tmstruckWeightResult;
+ TmstruckWeightResultMapper tmstruckWeightResultMapper;
+ TmstruckLoadResultMapper tmstruckLoadResultMapper;
+ AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
+ AmsSaleMaterialMapper amsSaleMaterialMapper;
+ AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
+ JoinFeign joinFeign;
+ OmstruckOrderMapper omstruckOrderMapper;
+ OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
+ AmsSaleOrderMaterialServiceImpl amsSaleOrderMaterialService;
+ TmsTruckFeign tmsTruckFeign;
+ RmsMaterialMapper rmsMaterialMapper;
+ TmstrainPleaseApproveResultMapper tmstrainPleaseApproveResultMapper;
+ WmspOutboundResultMaterialMapper wmspOutboundResultMaterialMapper;
+ OtmsFeign otmsFeign;
+ RmsFeign rmsFeign;
+ BmstruckFeign bmstruckFeign;
+ SaleLogUtil saleLogUtil;
+ public int addTransPlan(Map<String, Object> mapValue) throws Exception{
+ List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
+ // 得到发货单位
+ BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
+ // 收货单位
+ BigDecimal receiveId = DataChange.dataToBigDecimal(mapValue.get("receiveId"));
+ if (receiveId == null || receiveId.intValue() == 0) {
+ receiveId = amsSaleOrderMapper.findReceiveIdByOye(mapValue.get("receiveName"));
+ if (receiveId == null) {
+ throw new Exception("下单客户不存在!!!或无入库至欧冶库");
+ // 是否自提
+ String isSelfMention = (String) mapValue.get("isSelfMention");
+ // 摘要
+ String saleRemark = (String) mapValue.get("saleRemark");
+ if (saleRemark == null) {
+ throw new Exception("片区不能为空");
+ //判断摘要与客户对应的摘要有没有在库存里
+ Map<String, Object> searchMap = new HashMap<>();
+ searchMap.put("consigneeId",receiveId);
+ searchMap.put("saleRemark",saleRemark);
+ List<BigDecimal> realTimeInventory = amsSaleMaterialMapper.getRealTimeInventory(searchMap);
+ if(realTimeInventory.size() == 0 || realTimeInventory.get(0) == null) {
+ throw new Exception("该客户所在片区无库存");
+ // 业务员
+ BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
+ if (salerId == null || salerId.intValue() == 0) {
+ if(mapValue.get("salerName") == null) {
+ throw new Exception("您输入的业务员为空,请检查后再导入!!");
+ salerId = amsSaleOrderMapper.findSalerId(mapValue.get("salerName"));
+ if (salerId == null) {
+ throw new Exception("您输入的业务员:" + mapValue.get("salerName") +"不存在!!");
+ BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
+ int result = 0;
+ // 销售订单
+ AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
+ amsSaleOrder.setReceiveId(receiveId);
+ amsSaleOrder.setSaleRemark(saleRemark);
+ amsSaleOrder.setShipperId(shipperId);
+ amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
+ amsSaleOrder.setSaleOrderId(saleOrderId);
+ amsSaleOrder.setSalerId(salerId);
+ // 设置钢材订单
+ amsSaleOrder.setSaleType(new BigDecimal(50));
+ amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WOYDD",saleOrderId.intValue(),"-"));
+ amsSaleOrder.setInsertTime(new Date());
+ amsSaleOrder.setInsertUpdateRemark("新增欧冶转运计划");
+ amsSaleOrder.setInsertUsername("物流");
+ amsSaleOrder.setUpdateTime(new Date());
+ amsSaleOrder.setDeleted(new BigDecimal(0));
+ amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
+ amsSaleOrder.setBusinessDate(new Date());
+ // 销售订单物资表
+ AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
+ // 车序号物资表
+ AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
+ // 遍历每一行
+ for (Map<String, Object> map : mapList) {
+ if(!getRealTimeInfo(map)) {
+ throw new Exception("超出实时库存数量,请调整后再次输入");
+ /*
+ 车序号表
+ */
+ // 得到车序号
+ BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("cxh"));
+ Map<String,Object> saleMap = new HashMap<>();
+ saleMap.put("saleOrderId",saleOrderId);
+ saleMap.put("saleOrderMaterialTruckNo",truckNo);
+ // 检测销售订单下的车序号是否已存在
+ List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
+ // 车序号表
+ AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
+ if (amsSaleOrderMaterials == null || amsSaleOrderMaterials.size() == 0) {
+ // 车序号主键
+ BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
+ BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shipperAddressId"));
+ if (shippingAddressId == null || shippingAddressId.intValue() == 0) {
+ String province = (String) map.get("province");
+ String district = (String) map.get("district");
+ String town = (String) map.get("town");
+ Map<String,Object> addressMap = new HashMap<>();
+ addressMap.put("province",province);
+ addressMap.put("district",district);
+ addressMap.put("town",town);
+ shippingAddressId = amsSaleOrderMapper.findAddressId(addressMap);
+ if (shippingAddressId == null) {
+ throw new Exception("您输入的:" + province + district + town + "地址不存在!!");
+ // 车号备注
+ String truckRemark = (String) (map.get("truckRemark"));
+ String place = (String) (map.get("place"));
+ if (place != null && !"null".equals(place)) {
+ List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
+ if (placeIdList == null || placeIdList.size() == 0) {
+ rmsReceivePlace.setAddressId(shippingAddressId);
+ rmsReceivePlace.setAddressDeliveryAddress(place);
+ amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
+ } else {
+ amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
+ if (amsSaleOrderMaterial.getSaleShippingAddressId() != null && isSelfMention.equals("否")) {
+ // 自动匹配承运商
+ List<Map<String, Object>> carrierList = amsSaleOrderService.getCarrierByAddress(amsSaleOrderMaterial.getSaleShippingAddressId());
+ BigDecimal carrierCount = null;
+ if(place != null && !"null".equals(place)){
+ carrierCount = amsSaleOrderMapper.getMoreCarrier(place);
+ //根据收货地址id查询备注,判断是否需要匹配承运商
+ String addressRemark = amsSaleOrderMaterialMapper.getAddressRemark(shippingAddressId);
+ // 单一承运商才进行匹配
+ if (carrierList != null && carrierList.size() == 1 && carrierList.get(0) != null && carrierCount.intValue() == 0 && addressRemark == null) {
+ List<Map<String, Object>> list = new ArrayList<>();
+ Map<String, Object> map1 = carrierList.get(0);
+ // 传入车序号主键和承运商id
+ map1.put("saleOrderMaterialId", saleOrderMaterialId);
+ list.add(map1);
+ amsSaleOrderService.dispatchToCarrier(list);
+ if (isSelfMention.equals("是")) {
+ // 根据收货单位id查询出收货单位名称
+ // 根据收货单位名称查询承运商id
+ BigDecimal carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
+ Map<String,Object> map1 = new HashMap<>();
+ if (carrierId != null) {
+ map1.put("carrierId", carrierId);
+ // 收货方姓名
+ String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
+ // 收货方电话
+ String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
+ amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
+ amsSaleOrderMaterial.setSaleDateOfReceipt(new Date());
+ amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
+ amsSaleOrderMaterial.setTruckRemark(truckRemark);
+ amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
+ if(map.get("orderNo") != null) {
+ amsSaleOrderMaterial.setPreviousOrderNumber((String) map.get("orderNo"));
+ if (consigneeName != null && !consigneeName.equals("null")) {
+ amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
+ if (consigneeTel != null && !consigneeTel.equals("null")) {
+ amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
+ amsSaleOrderMaterial.setInsertTime(new Date());
+ amsSaleOrderMaterial.setUpdateTime(new Date());
+ amsSaleOrderMaterial.setInsertUpdateRemark("物流新增");
+ result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
+ else {
+ amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
+ 销售订单物资表
+ // 物资
+ BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
+ if (materialId == null || materialId.intValue() == 0) {
+ String name = (String) map.get("materialName");
+ String specification = (String) map.get("materialSpecification");
+ String model = (String) map.get("materialModel");
+ Map<String,Object> materialMap = new HashMap<>();
+ materialMap.put("name",name);
+ materialMap.put("specification",specification);
+ if (model == null || model.equals("") || model.equals("null")) {
+ model = null;
+ materialMap.put("model",model);
+ materialId = amsSaleOrderMapper.findMaterialId(materialMap);
+ if (materialId == null) {
+ throw new Exception("您输入的物资:" + name + specification + model + "不存在!!");
+ Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
+ RmsMaterial rmsMaterial = new RmsMaterial();
+ rmsMaterial.setMaterialId(materialId);
+ if (materialCount == null) {
+ materialCount = new Integer(0);
+ rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
+ rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
+ // 物资件数
+ BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
+ // 物资名称
+ Object materialName = map.get("materialName");
+ // 钢材米数
+ BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
+ // 判断物资是否是盘螺或盘元/盘圆
+ if (materialName != null && (materialName.toString().contains("盘螺") || materialName.toString().contains("盘元") || materialName.toString().contains("盘圆"))) {
+ amsSaleMaterial.setSteelMeter(null);
+ amsSaleMaterial.setSteelMeter(steelMeters);
+ // 是否磅重销售(0:磅重;1:理重)
+ BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPound"));
+ BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
+ //if (inventoryId == null || inventoryId.intValue() == 0) {
+ // if (map.get("inboundWarehouseName") == null || "".equals(map.get("inboundWarehouseName"))) {
+ // throw new Exception("库房名称为必填");
+ // }
+ // Map<Object, Object> excelMap = new HashMap<>();
+ // excelMap.put("materialId",materialId);
+ // excelMap.put("inboundWarehouseName",map.get("inboundWarehouseName"));
+ // excelMap.put("meter",steelMeters);
+ // excelMap.put("singleWeight",map.get())
+ //}
+ // 销售订单物资表主键
+ BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
+ amsSaleMaterial.setSaleMaterialId(saleMaterialId);
+ //amsSaleMaterial.setMaterialWeight();
+ amsSaleMaterial.setSaleOrderId(saleOrderId);
+ amsSaleMaterial.setMaterialId(materialId);
+ amsSaleMaterial.setMaterialNumber(materialNumber);
+ amsSaleMaterial.setMaterialPlanNumber(materialNumber);
+ amsSaleMaterial.setSaleWarehouse(inventoryId + "");
+ amsSaleMaterial.setSaleNo(amsSaleOrder.getSaleNumber());
+ amsSaleMaterial.setTransferInOfWarehouse(saleRemark);
+ amsSaleMaterial.setInsertTime(new Date());
+ amsSaleMaterial.setUpdateTime(new Date());
+ amsSaleMaterial.setIsPoundSale(isPoundSale);
+ amsSaleMaterial.setInsertUpdateRemark("物流新增");
+ result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
+ 车序号物资表
+ // 车序号物资表主键
+ BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
+ amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
+ amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
+ amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
+ amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
+ amsSaleTrucknoMaterial.setInsertTime(new Date());
+ amsSaleTrucknoMaterial.setUpdateTime(new Date());
+ amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
+ result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
+ result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
+ return saleOrderId.intValue();
+ public List<Map<String, Object>> getTransPlan(Map<String, Object> mapValue) {
+ return amsSaleOrderMapper.getTransPlan(mapValue);
+ public int approveTransPlan(Map<String, Object> map) {
+ List<Map<String,Object>> mapList = (List<Map<String,Object>>) map.get("mapList");
+ int i = 0 ;
+ for (Map<String,Object> approveMap : mapList) {
+ i += amsSaleOrderMapper.approveTransPlan(approveMap);
+ return i;
+ //根据销售订单子表ID,判断待出库的一个数量
+ public synchronized Boolean getRealTimeInfo(Map<String,Object> map) throws Exception {
+ //根据库存ID,统计所有未装但已制订计划的正常单据
+ BigDecimal unloadMaterialNumber = amsSaleMaterialMapper.getRealTimeUnloadNumber(inventoryId);
+ BigDecimal realTimeMaterialNumber = amsSaleMaterialMapper.getRealTimeMaterialNumber(inventoryId);
+ if (realTimeMaterialNumber.intValue() == 0) {
+ throw new Exception("该实时库存无数量,无法下单");
+ if (realTimeMaterialNumber.subtract(unloadMaterialNumber).compareTo(materialNumber) >= 0) {
+ return true;
+ return false;
@@ -931,4 +931,57 @@
WHERE ASM.SALE_MATERIAL_ID = #{saleMaterialId}
AND ASM.DELETED IS NULL
</select>
+ <select id="getRealTimeInventory" resultType="java.math.BigDecimal">
+ SELECT ORI.SINGLE_WEIGHT "singleWeight",
+ ORI.METER "meter",
+ ORI.MATERIAL_ID "materialId",
+ ORI.MATERIAL_NUMBER "materialNumber",
+ ORI.THEORY_WEIGHT "theoryWeight",
+ ORI.NET_WEIGHT "netWeight",
+ ORI.SALE_AREA "saleArea",
+ ORI.INVENTORY_ID "inventoryId",
+ ORI.INBOUND_WAREHOUSE "inboundWarehouse",
+ ORI.INBOUND_AREA "inboundArea",
+ ORI.INSERT_TIME "insertTime"
+ FROM OYE_REALTIME_INVENTORY ORI
+ <where>
+ <if test="saleArea != null and saleArea != ''">
+ AND ORI.SALE_AREA LIKE '%${saleArea}%'
+ </if>
+ <if test="inboundWarehouse != null and inboundWarehouse != ''">
+ AND ORI.INBOUND_WAREHOUSE LIKE '%${inboundWarehouse}%'
+ <if test="inboundArea != null and inboundArea != ''">
+ AND ORI.inbound_Area LIKE '%${inboundArea}%'
+ <if test="materialId != null and materialId != ''">
+ AND ORI.MATERIAL_ID = #{materialId}
+ <if test="meter != null and meter != ''">
+ AND ORI.meter = #{meter}
+ <if test="saleRemark != null and saleRemark != ''">
+ AND ORI.SALE_AREA = #{saleRemark}
+ <if test="consigneeId != null and consigneeId != ''">
+ AND ORI.CONSIGNEE_ID = #{consigneeId}
+ </where>
+ </select>
+ <select id="getRealTimeUnloadNumber" resultType="java.math.BigDecimal" parameterType="decimal">
+ SELECT NVL(SUM(ASM.MATERIAL_NUMBER),0) FROM AMS_SALE_MATERIAL ASM
+ LEFT JOIN AMS_SALE_ORDER ASO ON ASO.SALE_ORDER_ID = ASM.SALE_ORDER_ID
+ WHERE ASO.DELETED = 0
+ AND ASM.SALE_MATERIAL_ID IS NOT NULL
+ AND ASM.DELETED IS NULL
+ AND ASM.SALE_WAREHOUSE = to_char(#{inventoryId})
+ AND ASO.SALE_TYPE = 50
+ AND ASM.SALE_MATERIAL_ID NOT IN (
+ SELECT OOR.SALE_MATERIAL_ID FROM OYE_OUTBOUND_RESULT OOR WHERE OOR.INVENTORY_ID = #{inventoryId}
+ )
+ <select id="getRealTimeMaterialNumber" resultType="java.math.BigDecimal" parameterType="decimal">
+ SELECT NVL(SUM(ORI.MATERIAL_NUMBER),0) FROM OYE_REALTIME_INVENTORY ORI
+ WHERE ORI.INVENTORY_ID = #{inventoryId}
</mapper>
@@ -1728,6 +1728,7 @@
WHERE a_s_order.SALE_ORDER_STATUS = 0
AND a_s_order.DELETED = 0
+ AND a_s_order.SALE_TYPE = 1
<if test="con != null">
and (instr(r_consignee.CONSIGNEE_COMPANY_NAME, #{con}) > 0 or instr(a_s_order.SALE_NUMBER, #{con}) > 0)
</if>
@@ -1854,6 +1855,7 @@
where a_s_order.SALE_ORDER_STATUS=1
and a_s_order.DELETED = 0
@@ -2139,6 +2141,7 @@
and a_s_order.CLOSE_STATUS is null
and ASM.DELETED IS NULL
and ASM.SALE_MATERIAL_ID IS NOT NULL
and r_consignee.CONSIGNEE_COMPANY_NAME||a_s_order.SALE_NUMBER||rm.material_name||RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL like #{con}
@@ -5050,5 +5053,205 @@
and oo.ORDER_STATUS = 4
and oo.order_type = 2)
</update>
+ <select id="findReceiveIdByOye" resultType="java.math.BigDecimal">
+ SELECT RC.CONSIGNEE_ID AS "receiveId"
+ FROM RMS_CONSIGNEE RC
+ LEFT JOIN OYE_REALTIME_INVENTORY ORI
+ ON ORI.CONSIGNEE_ID = RC.CONSIGNEE_ID
+ WHERE RC.CONSIGNEE_COMPANY_NAME = #{receiveName}
+ AND RC.CONSIGNEE_CODE IS NOT NULL
+ AND RC.EAS_CONSIGNEE_ID IS NOT NULL
+ AND ORI.CONSIGNEE_ID IS NOT NULL
+ AND RC.DELETED = 0
+ <select id="getTransPlan" resultType="java.util.Map">
+ select * from(
+ SELECT a_s_order.SALE_ORDER_ID "saleOrderId",
+ a_s_order.SALE_NUMBER "saleNumber",
+ r_shipper.SHIPPER_NAME "shipperName",
+ r_consignee.CONSIGNEE_COMPANY_NAME "consigneeCompanyName",
+ a_s_order.SALE_ORDER_ISSELF_MENTION "saleOrderIsselfMention",
+ a_s_order.SALE_REMARK "saleRemark",
+ a_s_order.INSERT_TIME "insertTime",
+ RM.MATERIAL_NAME "materialName",
+ RM.MATERIAL_SPECIFICATION "materialSpecification",
+ RM.MATERIAL_MODEL "materialModel",
+ ASM.MATERIAL_NUMBER "materialNumber",
+ RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL "specificationModel",
+ RM.MATERIAL_NAME || RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL "nameSpecificationModel",
+ RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN ||
+ RRP.ADDRESS_DELIVERY_ADDRESS AS "addressPlace",
+ ASOM.SALE_ORDER_MATERIAL_ID AS "saleOrderMaterialId",
+ decode(ASM.IS_POUND_SALE, 0, '是' , '否') "isPoundSale",
+ CASE WHEN
+ ASM.IS_POUND_SALE = 1
+ THEN ORI.SINGLE_WEIGHT * ASM.MATERIAL_NUMBER
+ ELSE null
+ END "materialWeight",
+ ASOM.TRUCK_REMARK "trucRemark",
+ ASOM.SALE_ORDER_CONSIGNEE_TEL "consigneeTel",
+ ASOM.SALE_ORDER_MATERIAL_TRUCK_NO "truckNo",
+ ORI.INBOUND_WAREHOUSE "inventoryWarehouse",
+ ORI.MATERIAL_NUMBER "inventoryMaterialNumber",
+ ORI.THEORY_WEIGHT "inventoryTheoryWeight",
+ ORI.SINGLE_WEIGHT "singleWeight",
+ ORI.METER "meter"
+ FROM AMS_SALE_ORDER a_s_order
+ LEFT JOIN RMS_SHIPPER r_shipper
+ ON a_s_order.SHIPPER_ID = r_shipper.SHIPPER_ID
+ LEFT JOIN RMS_CONSIGNEE r_consignee
+ ON a_s_order.RECEIVE_ID = r_consignee.CONSIGNEE_ID
+ LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
+ ON ASOM.SALE_ORDER_ID = a_s_order.SALE_ORDER_ID
+ LEFT JOIN RMS_RECEIVE_PLACE RRP
+ ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+ LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+ ON RRA.ADDRESS_ID = RRP.ADDRESS_ID
+ LEFT JOIN AMS_SALE_TRUCKNO_MATERIAL ASTM
+ ON ASTM.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+ LEFT JOIN AMS_SALE_MATERIAL ASM
+ ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
+ LEFT JOIN RMS_MATERIAL RM
+ ON RM.MATERIAL_ID = ASM.MATERIAL_ID
+ LEFT JOIN RMS_SALER R_SALER
+ ON R_SALER.SALER_ID = a_s_order.SALER_ID
+ ON ORI.INVENTORY_ID = ASM.SALE_WAREHOUSE
+ WHERE a_s_order.SALE_ORDER_STATUS = #{orderStatus}
+ AND a_s_order.DELETED = 0
+ AND a_s_order.SALE_TYPE = 50
+ <if test="con != null">
+ and (instr(r_consignee.CONSIGNEE_COMPANY_NAME, #{con}) > 0 or instr(a_s_order.SALE_NUMBER, #{con}) > 0)
+ <if test="consigneeSsoId != null" >
+ and r_consignee.CONSIGNEE_SSO_ID = #{consigneeSsoId}
+ <if test="saler != null " >
+ and R_SALER.INSERT_UPDATE_REMARK like #{saler}
+ <if test="consigneeName != null">
+ and r_consignee.CONSIGNEE_COMPANY_NAME = #{consigneeName}
+ <if test="oneDate != null">
+ and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') <= a_s_order.UPDATE_TIME
+ <if test="startDate != null">
+ and to_date(#{startDate}, 'yyyy-mm-dd hh24:mi:ss') <= a_s_order.UPDATE_TIME
+ and to_date(#{endDate}, 'yyyy-mm-dd hh24:mi:ss') >= a_s_order.UPDATE_TIME
+ ORDER BY a_s_order.SALE_ORDER_ID DESC ,ASOM.SALE_ORDER_MATERIAL_TRUCK_NO asc
+ <if test="saleNumber != null">
+ and
+ <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">
+ "saleNumber" like '%${item}%'
+ </foreach>
+ <if test="materialName != null">
+ <foreach collection="materialName" item="item" open="(" separator="or" close=")">
+ "materialName" like '%${item}%'
+ <if test="specificationModel != null">
+ <foreach collection="specificationModel" item="item" open="(" separator="or" close=")">
+ "specificationModel" like '%${item}%'
+ <if test="materialModel != null">
+ <foreach collection="materialModel" item="item" open="(" separator="or" close=")">
+ "materialModel" like '%${item}%'
+ <if test="shipperName != null">
+ <foreach collection="shipperName" item="item" open="(" separator="or" close=")">
+ "shipperName" like '%${item}%'
+ <if test="consigneeCompanyName != null">
+ <foreach collection="consigneeCompanyName" item="item" open="(" separator="or" close=")">
+ "consigneeCompanyName" like '%${item}%'
+ <if test="saleRemark != null">
+ <foreach collection="saleRemark" item="item" open="(" separator="or" close=")">
+ "saleRemark" like '%${item}%'
+ <if test="materialTheoreticalWeight != null">
+ <foreach collection="materialTheoreticalWeight" item="item" open="(" separator="or" close=")">
+ "materialTheoreticalWeight" like '%${item}%'
+ <if test="saleOrderMaterialNumber != null">
+ <foreach collection="saleOrderMaterialNumber" item="item" open="(" separator="or" close=")">
+ "saleOrderMaterialNumber" like '%${item}%'
+ <if test="saleOrderIsselfMention != null">
+ <foreach collection="saleOrderIsselfMention" item="item" open="(" separator="or" close=")">
+ "saleOrderIsselfMention" like '%${item}%'
+ <include refid="orderBy"></include>
+ <update id="approveTransPlan" parameterType="java.util.Map">
+ UPDATE AMS_SALE_ORDER ASO
+ SET ASO.SALE_ORDER_STATUS = #{orderStatus},
+ ASO.DELETED = #{deleted}
+ <if test="remark != null">
+ ,ASO.INSERT_UPDATE_REMARK = #{remark}
+ WHERE ASO.SALE_ORDER_ID = #{saleOrderId}
+ </update>
+ <select id="selectPlaceRemark" resultType="java.lang.String" parameterType="java.lang.String">
+ SELECT RRP.INSERT_UPDATE_REMARK FROM RMS_RECEIVE_PLACE RRP
+ WHERE RRP.ADDRESS_DELIVERY_ADDRESS = #{place}
+ <select id="getPlaceAddress" resultType="java.lang.String" parameterType="decimal">
+ SELECT RRP.ADDRESS_DELIVERY_ADDRESS "place"
+ FROM AMS_SALE_ORDER_MATERIAL ASOM
+ WHERE ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
@@ -354,5 +354,17 @@
AND RRP.ADDRESS_ID = #{addressId}
FETCH NEXT 1 ROW ONLY
+ <select id="getOyeWarehouse" resultType="java.util.Map">
+ SELECT RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN "warehouseArea",
+ RRP.ADDRESS_DELIVERY_ADDRESS "warehouseName",
+ RRP.INSERT_UPDATE_REMARK "remark"
+ FROM RMS_RECEIVE_ADDRESS RRA
+ LEFT JOIN RMS_RECEIVE_PLACE RRP ON RRP.ADDRESS_ID = RRA.ADDRESS_ID
+ WHERE RRA.INSERT_UPDATE_REMARK = '厂外库'
+ <select id="getAddressType" resultType="java.lang.String">
+ SELECT RRA.INSERT_UPDATE_REMARK FROM RMS_RECEIVE_ADDRESS RRA
+ WHERE RRA.ADDRESS_ID = #{shippingAddressId}
@@ -1,5 +1,5 @@
## LOG4J\u914D\u7F6E
-log4j.rootCategory=INFO,file,RUNNING,errorfile
+log4j.rootCategory=INFO,file,RUNNING,errorfile,stdout
## \u63A7\u5236\u53F0\u8F93\u51FA
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout