|
@@ -93,7 +93,7 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
|
|
|
System.out.println(map.get("ID"));
|
|
|
//获取最大code
|
|
|
- String cCode=oConvertUtils.addOne(this.baseMapper.getMaxCode("cCode","RdRecord01","dDate"));
|
|
|
+ String cCode=oConvertUtils.addOne(this.baseMapper.getMaxCode("cCode","RdRecord01","dnmaketime"));
|
|
|
|
|
|
if(cCode!=null){
|
|
|
map.put("cCode",cCode);
|
|
@@ -101,6 +101,8 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
}else{
|
|
|
throw new RuntimeException("获取入库单号失败");
|
|
|
}
|
|
|
+ map.put("cMaker","陈创");
|
|
|
+ map.put("cHandler","陈创");
|
|
|
//日期
|
|
|
Long longtime=Long.valueOf(String.valueOf(map.get("dDate")));
|
|
|
String formatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(longtime));
|
|
@@ -117,10 +119,11 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
map.put("cRdCode","11");
|
|
|
map.put("cPTCode","01");
|
|
|
map.put("cSource","采购订单");
|
|
|
- //获取汇率
|
|
|
+ //获取汇率、币种
|
|
|
Map<String,Object> PO_PomainMap=this.baseMapper.getPO_PomainBycPOID(String.valueOf(map.get("cOrderCode")));
|
|
|
if(PO_PomainMap!=null){
|
|
|
map.put("iExchRate",getDecimalNew(String.valueOf(PO_PomainMap.get("nflat"))).doubleValue());
|
|
|
+ map.put("cExch_Name",PO_PomainMap.get("cexch_name"));
|
|
|
}else{
|
|
|
throw new RuntimeException("采购订单没有匹配的订单号");
|
|
|
}
|
|
@@ -129,10 +132,11 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
map.put("cRdCode","12");
|
|
|
map.put("cPTCode","01");
|
|
|
map.put("cSource","委外订单");
|
|
|
- //获取汇率
|
|
|
+ //获取汇率、币种
|
|
|
Map<String,Object> OM_MOmainMap=this.baseMapper.getOM_MOmainBycCode(String.valueOf(map.get("cOrderCode")));
|
|
|
if(OM_MOmainMap!=null){
|
|
|
map.put("iExchRate",getDecimalNew(String.valueOf(OM_MOmainMap.get("nflat"))).doubleValue());
|
|
|
+ map.put("cExch_Name",OM_MOmainMap.get("cexch_name"));
|
|
|
}else{
|
|
|
throw new RuntimeException("委外订单没有匹配的订单号");
|
|
|
}
|
|
@@ -171,6 +175,22 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
throw new RuntimeException("供应商编码不能为空");
|
|
|
}
|
|
|
|
|
|
+ //判断接收方是否有只值 宁波森语 马菲羊 森语集团
|
|
|
+ boolean iscVenCodeReceiver=false;
|
|
|
+ if(map.get("cVenCodeReceiver")!=null&&!String.valueOf(map.get("cVenCodeReceiver")).equals("")){
|
|
|
+ //根据接收方获取供应商信息
|
|
|
+ Map<String,Object> mapVenCode= this.baseMapper.getWhCodeByVenCode(String.valueOf(map.get("cVenCodeReceiver")));
|
|
|
+ if(mapVenCode!=null){
|
|
|
+ String cVenAbbName=String.valueOf(mapVenCode.get("cVenAbbName"));//供应商简称
|
|
|
+ //判断是否外部供应商 外部则进入下一波做调拨单 非则不做
|
|
|
+ if(!cVenAbbName.equals("宁波森语")&&!cVenAbbName.equals("马菲羊")&&!cVenAbbName.equals("森语集团")){
|
|
|
+ iscVenCodeReceiver=true;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ throw new RuntimeException("未能找到接收方信息");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//子表
|
|
|
List<Map<String,Object>> itemList=new ArrayList<>();
|
|
@@ -181,12 +201,12 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
for(Map<String,Object> itemMap:itemList){
|
|
|
//获取P号
|
|
|
if(itemMap.get("cBatch")==null||String.valueOf(itemMap.get("cBatch")).equals("")){
|
|
|
- message=message+"第"+rowId+"缺少批号;";
|
|
|
+ message=message+"第"+rowId+"行缺少批号;";
|
|
|
}
|
|
|
//获取子表最大id
|
|
|
Map<String,Integer> pkMapChild = callGetUAMaxPK2("rd",accID);
|
|
|
if(pkMap.get("iChildId")==null){
|
|
|
- message=message+"第"+rowId+"获取入库单子表ID失败;";
|
|
|
+ message=message+"第"+rowId+"行获取入库单子表ID失败;";
|
|
|
throw new RuntimeException("获取入库单子表ID失败");
|
|
|
}
|
|
|
itemMap.put("AutoID",pkMapChild.get("iChildId"));
|
|
@@ -214,20 +234,38 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
Map<String,Object> mapPOPodetails= this.baseMapper.getPOPodetails(rowmId);
|
|
|
|
|
|
if(mapPOPodetails!=null){
|
|
|
+
|
|
|
+
|
|
|
map.put("ipurorderid",mapPOPodetails.get("POID"));
|
|
|
+ //获取订单行的价格字段
|
|
|
+ getCost(itemMap,mapPOPodetails);
|
|
|
//获取订单行的自定义项数据
|
|
|
getcFree(itemMap,mapPOPodetails);
|
|
|
- //回写入库数量到采购订单行
|
|
|
- BigDecimal freceivedqty=getDecimalNew(String.valueOf(mapPOPodetails.get("freceivedqty"))).add(getDecimalNew(String.valueOf(itemMap.get("iQuantity"))));
|
|
|
+ itemMap.put("cWhCode",map.get("cWhCode"));//获取仓库 供回写现存量用
|
|
|
+ //回写到货数量到采购订单行
|
|
|
+ //如果是红字入库则相减
|
|
|
+ BigDecimal iReceivedQTY=new BigDecimal("0.0");
|
|
|
+ if(map.get("cVouchType").toString().equals("1")){
|
|
|
+ iReceivedQTY=getDecimalNew(String.valueOf(mapPOPodetails.get("iReceivedQTY"))).subtract(getDecimalNew(String.valueOf(itemMap.get("iQuantity"))));
|
|
|
+ //回写到现存量 如果不是调拨业务则入库单需要回写现存量 如果是调拨单 那么只要在调拨或者其他入库的时候回写现存量
|
|
|
+ if(iscVenCodeReceiver==false){
|
|
|
+ message=message+"第"+rowId+"行"+saveCurrentStock(itemMap,"2");
|
|
|
+ }
|
|
|
+ }else{//篮字则相加
|
|
|
+ iReceivedQTY=getDecimalNew(String.valueOf(mapPOPodetails.get("iReceivedQTY"))).add(getDecimalNew(String.valueOf(itemMap.get("iQuantity"))));
|
|
|
+ //回写到现存量 如果不是调拨业务则入库单需要回写现存量 如果是调拨单 那么只要在调拨或者其他入库的时候回写现存量
|
|
|
+ if(iscVenCodeReceiver==false){
|
|
|
+ saveCurrentStock(itemMap,"1");
|
|
|
+ }
|
|
|
+ }
|
|
|
Map<String,Object> mapFreceivedqty=new HashMap<>();
|
|
|
- mapFreceivedqty.put("freceivedqty",freceivedqty);//入库数量
|
|
|
+ mapFreceivedqty.put("iReceivedQTY",iReceivedQTY);//到货数量
|
|
|
mapFreceivedqty.put("ID",rowmId);//订单行id
|
|
|
//回写到采购订单对应行
|
|
|
this.baseMapper.updatePodetailsfreceivedqty(mapFreceivedqty);
|
|
|
//回写到现存量
|
|
|
- itemMap.put("cWhCode",map.get("cWhCode"));//获取仓库
|
|
|
- //回写到现存量
|
|
|
- saveCurrentStock(itemMap);
|
|
|
+
|
|
|
+
|
|
|
// Integer isCount= this.baseMapper.getCurrentStockCount(itemMap);
|
|
|
// if(isCount!=null&&isCount>0){
|
|
|
//
|
|
@@ -240,10 +278,10 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
message=message+saveAA_BatchProperty(map,itemMap,mapPOPodetails);
|
|
|
}
|
|
|
}else{
|
|
|
- message=message+"第"+rowId+"未找到对应的采购订单行;";
|
|
|
+ message=message+"第"+rowId+"行未找到对应的采购订单行;";
|
|
|
}
|
|
|
}else{
|
|
|
- message=message+"第"+rowId+"缺少采购订单行id;";
|
|
|
+ message=message+"第"+rowId+"行缺少采购订单行id;";
|
|
|
}
|
|
|
}else{//委外入库
|
|
|
|
|
@@ -258,18 +296,33 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
//获取订单行数据
|
|
|
Map<String,Object> mapOMMODetails=this.baseMapper.getOMMODetails(rowmId);
|
|
|
if(mapOMMODetails!=null){
|
|
|
+ //获取订单行的价格字段
|
|
|
+ getCost(itemMap,mapOMMODetails);
|
|
|
//获取订单的自定义数据
|
|
|
getcFree(itemMap,mapOMMODetails);
|
|
|
+ itemMap.put("cWhCode",map.get("cWhCode"));//获取仓库
|
|
|
//回写入库数量到委外订单行
|
|
|
- BigDecimal freceivedqty=getDecimalNew(String.valueOf(mapOMMODetails.get("iReceivedQTY"))).add(getDecimalNew(String.valueOf(itemMap.get("iQuantity"))));
|
|
|
+ //如果是红字入库则相减
|
|
|
+ BigDecimal iReceivedQTY=new BigDecimal("0.0");
|
|
|
+ if(map.get("cVouchType").toString().equals("1")){
|
|
|
+ iReceivedQTY=getDecimalNew(String.valueOf(mapOMMODetails.get("iReceivedQTY"))).subtract(getDecimalNew(String.valueOf(itemMap.get("iQuantity"))));
|
|
|
+ //回写到现存量 如果不是调拨业务则入库单需要回写现存量 如果是调拨单 那么只要在调拨或者其他入库的时候回写现存量
|
|
|
+ if(iscVenCodeReceiver==false) {
|
|
|
+ message=message+"第"+rowId+"行"+saveCurrentStock(itemMap,"2");
|
|
|
+ }
|
|
|
+ }else{//蓝字则相加
|
|
|
+ iReceivedQTY=getDecimalNew(String.valueOf(mapOMMODetails.get("iReceivedQTY"))).add(getDecimalNew(String.valueOf(itemMap.get("iQuantity"))));
|
|
|
+ //回写到现存量 如果不是调拨业务则入库单需要回写现存量 如果是调拨单 那么只要在调拨或者其他入库的时候回写现存量
|
|
|
+ if(iscVenCodeReceiver==false) {
|
|
|
+ saveCurrentStock(itemMap,"1");
|
|
|
+ }
|
|
|
+ }
|
|
|
Map<String,Object> mapFreceivedqty=new HashMap<>();
|
|
|
- mapFreceivedqty.put("iReceivedQTY",freceivedqty);//入库数量
|
|
|
+ mapFreceivedqty.put("iReceivedQTY",iReceivedQTY);//入库数量
|
|
|
mapFreceivedqty.put("ID",rowmId);//订单行id
|
|
|
//回写到委外订单对应行
|
|
|
this.baseMapper.updateOMMODetailsfreceivedqty(mapFreceivedqty);
|
|
|
- //回写到现存量
|
|
|
- itemMap.put("cWhCode",map.get("cWhCode"));//获取仓库
|
|
|
- saveCurrentStock(itemMap);
|
|
|
+
|
|
|
// Integer isCount= this.baseMapper.getCurrentStockCount(itemMap);
|
|
|
// if(isCount!=null&&isCount>0){
|
|
|
// //修改现存量
|
|
@@ -306,51 +359,61 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
}
|
|
|
this.baseMapper.saveRdRecord01One(map);
|
|
|
//调拨单
|
|
|
- //判断接收方是否有只值 宁波森语 马菲羊 森语集团
|
|
|
- if(map.get("cVenCodeReceiver")!=null&&!String.valueOf(map.get("cVenCodeReceiver")).equals("")){
|
|
|
- //根据接收方获取供应商信息
|
|
|
- Map<String,Object> mapVenCode= this.baseMapper.getWhCodeByVenCode(String.valueOf(map.get("cVenCodeReceiver")));
|
|
|
- if(mapVenCode!=null){
|
|
|
- String cVenAbbName=String.valueOf(mapVenCode.get("cVenAbbName"));//供应商简称
|
|
|
- //判断是否外部供应商 外部则进入下一波做调拨单 非则不做
|
|
|
- if(!cVenAbbName.equals("宁波森语")&&!cVenAbbName.equals("马菲羊")&&!cVenAbbName.equals("森语集团")){
|
|
|
- //保存调拨单
|
|
|
- saveTransVouch(map,itemList);
|
|
|
- }
|
|
|
- }else{
|
|
|
- throw new RuntimeException("未能找到接收方信息");
|
|
|
- }
|
|
|
+
|
|
|
+ if(iscVenCodeReceiver){
|
|
|
+ //保存调拨单
|
|
|
+ saveTransVouch(map,itemList);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//回写现存量
|
|
|
- public void saveCurrentStock(Map<String,Object> itemMap){
|
|
|
- //修改现存量
|
|
|
- //查询SCM_ITEM是否存在
|
|
|
- Map<String,Object> SCM_ITEMMap=this.baseMapper.getSCM_ITEM(itemMap);
|
|
|
- String itemId="";
|
|
|
- if(SCM_ITEMMap!=null){
|
|
|
- //存在则进行获取id
|
|
|
- itemId=String.valueOf(SCM_ITEMMap.get("Id"));
|
|
|
- }else{//没找到则进行新增
|
|
|
- itemId=oConvertUtils.addOne(getMaxId("Id","SCM_ITEM"));
|
|
|
+ public String saveCurrentStock(Map<String,Object> itemMap,String type){
|
|
|
+ String message="";
|
|
|
+ //现存量增加
|
|
|
+ if(type.equals("1")){
|
|
|
+ //修改现存量
|
|
|
+ //查询SCM_ITEM是否存在
|
|
|
+ Map<String,Object> SCM_ITEMMap=this.baseMapper.getSCM_ITEM(itemMap);
|
|
|
+ String itemId="";
|
|
|
+ if(SCM_ITEMMap!=null){
|
|
|
+ //存在则进行获取id
|
|
|
+ itemId=String.valueOf(SCM_ITEMMap.get("Id"));
|
|
|
+ }else{//没找到则进行新增
|
|
|
+ itemId=oConvertUtils.addOne(getMaxId("Id","SCM_ITEM"));
|
|
|
// itemMap.put("SCMITEMId",itemId);
|
|
|
- this.baseMapper.saveSCM_ITEM(itemMap);
|
|
|
- }
|
|
|
- //查询现存量是否存在
|
|
|
+ this.baseMapper.saveSCM_ITEM(itemMap);
|
|
|
+ }
|
|
|
+ //查询现存量是否存在
|
|
|
// Map<String,Object> CurrentStockMap=this.baseMapper.getCurrentStock(itemMap);
|
|
|
- Integer isCount= this.baseMapper.getCurrentStockCount(itemMap);
|
|
|
- if(isCount!=null&&isCount>0){
|
|
|
- //存在则修改
|
|
|
- this.baseMapper.updateCurrentStock(itemMap);
|
|
|
- }else{
|
|
|
- //不存在则新增
|
|
|
- itemMap.put("ItemId",itemId);
|
|
|
- itemMap.put("currentStockAutoID",oConvertUtils.addOne(getMaxId("AutoID","CurrentStock")));
|
|
|
- this.baseMapper.insertCurrentStock(itemMap);
|
|
|
+ Map<String,Object> currentStockMap= this.baseMapper.getCurrentStockCount(itemMap);
|
|
|
+ if(currentStockMap!=null){
|
|
|
+ //存在则修改
|
|
|
+ this.baseMapper.updateCurrentStock(itemMap);
|
|
|
+ }else{
|
|
|
+ //不存在则新增
|
|
|
+ itemMap.put("ItemId",itemId);
|
|
|
+ itemMap.put("currentStockAutoID",oConvertUtils.addOne(getMaxId("AutoID","CurrentStock")));
|
|
|
+ this.baseMapper.insertCurrentStock(itemMap);
|
|
|
+ }
|
|
|
+ }else if(type.equals("2")){
|
|
|
+ //现存量减少
|
|
|
+ //查询现存量是否存在
|
|
|
+ Map<String,Object> currentStockMap= this.baseMapper.getCurrentStockCount(itemMap);
|
|
|
+ if(currentStockMap!=null){
|
|
|
+ BigDecimal currentiQuantity=getDecimalNew(String.valueOf(currentStockMap.get("iQuantity")));
|
|
|
+ //小于则进行报错
|
|
|
+ if(currentiQuantity.doubleValue()<=0.0){
|
|
|
+ message="现存量小于等于0不能被冲销";
|
|
|
+ }else{
|
|
|
+ //存在则修改
|
|
|
+ this.baseMapper.updateCurrentStockSubtract(itemMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ return message;
|
|
|
}
|
|
|
|
|
|
//新增AA_BatchProperty
|
|
@@ -409,6 +472,16 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
itemMap.put("cFree8",setNull(mapPOPodetails.get("cFree8")));
|
|
|
itemMap.put("cFree9",setNull(mapPOPodetails.get("cFree9")));
|
|
|
itemMap.put("cFree10",setNull(mapPOPodetails.get("cFree10")));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //采购入库获取订单的价格相关字段
|
|
|
+ public void getCost(Map<String,Object> itemMap,Map<String,Object> mapPOPodetails){
|
|
|
+ itemMap.put("iOriTaxCost",mapPOPodetails.get("iTaxPrice"));//原币含税单价
|
|
|
+ itemMap.put("iOriCost",mapPOPodetails.get("iUnitPrice"));//原币无税单价
|
|
|
+ itemMap.put("iOriMoney",mapPOPodetails.get("iMoney"));//原币无税金额
|
|
|
+ itemMap.put("iTax",mapPOPodetails.get("iTax"));//税额
|
|
|
+ itemMap.put("ioriSum",mapPOPodetails.get("iSum"));//原币价税合计
|
|
|
}
|
|
|
|
|
|
//获取批次属性赋值
|
|
@@ -504,7 +577,7 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
//获取主表最大ID
|
|
|
transVouchMao.put("ID",oConvertUtils.addOne(getMaxId("ID","TransVouch")));
|
|
|
//获取最大编码
|
|
|
- transVouchMao.put("cTVCode",oConvertUtils.addOne(this.baseMapper.getMaxCode("cTVCode","TransVouch","dTVDate")));
|
|
|
+ transVouchMao.put("cTVCode",oConvertUtils.addOne(this.baseMapper.getMaxCode("cTVCode","TransVouch","dnmaketime")));
|
|
|
//修改最大编码
|
|
|
this.baseMapper.updateVoucherHistoryCNumber(oConvertUtils.maxNumber(String.valueOf(transVouchMao.get("cTVCode"))),"0304");
|
|
|
//单据日期
|
|
@@ -666,6 +739,9 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
getcFree(RdRecords09Map,transVouchsMap);
|
|
|
//获取批次属性
|
|
|
getcBatchProperty(RdRecords09Map,transVouchsMap);
|
|
|
+ //回写现存量
|
|
|
+// RdRecords09Map.put("cWhCode",RdRecord09Map.get("cWhCode"));
|
|
|
+// saveCurrentStock(RdRecords09Map,"2");
|
|
|
this.baseMapper.saveRdRecords09(RdRecords09Map);
|
|
|
}
|
|
|
}
|
|
@@ -702,6 +778,9 @@ public class PurchaseWarehousingServiceImpl extends ServiceImpl<PurchaseWarehous
|
|
|
getcFree(RdRecords08Map,transVouchsMap);
|
|
|
//获取批次属性
|
|
|
getcBatchProperty(RdRecords08Map,transVouchsMap);
|
|
|
+ //回写现存量
|
|
|
+ RdRecords08Map.put("cWhCode",RdRecord08Map.get("cWhCode"));
|
|
|
+ saveCurrentStock(RdRecords08Map,"1");
|
|
|
this.baseMapper.saveRdRecords08(RdRecords08Map);
|
|
|
}
|
|
|
}
|