Commit 8d3d0314 authored by 季圣华's avatar 季圣华
Browse files

继续优化单据的逻辑

parent df4fa41b
...@@ -1360,6 +1360,10 @@ ...@@ -1360,6 +1360,10 @@
if(tipInfo){ if(tipInfo){
if(tipInfo.code!=200){ if(tipInfo.code!=200){
$.messager.alert('提示', tipInfo.msg, 'warning'); $.messager.alert('提示', tipInfo.msg, 'warning');
for(var i=0; i<rows.length; i++){
$('#materialData').datagrid('selectRow', i).datagrid('beginEdit', i);
self.autoReckon();
}
return; return;
} }
$.messager.alert('提示','保存成功!','info'); $.messager.alert('提示','保存成功!','info');
...@@ -1401,6 +1405,10 @@ ...@@ -1401,6 +1405,10 @@
if(tipInfo){ if(tipInfo){
if(tipInfo.code!=200){ if(tipInfo.code!=200){
$.messager.alert('提示', tipInfo.msg, 'warning'); $.messager.alert('提示', tipInfo.msg, 'warning');
for(var i=0; i<rows.length; i++){
$('#materialData').datagrid('selectRow', i).datagrid('beginEdit', i);
self.autoReckon();
}
return; return;
} }
$.messager.alert('提示','保存成功!','info'); $.messager.alert('提示','保存成功!','info');
......
...@@ -298,126 +298,121 @@ public class DepotItemService { ...@@ -298,126 +298,121 @@ public class DepotItemService {
@Transactional(value = "transactionManager", rollbackFor = Exception.class) @Transactional(value = "transactionManager", rollbackFor = Exception.class)
public void saveDetials(String rows, Long headerId, Long tenantId, HttpServletRequest request) throws Exception{ public void saveDetials(String rows, Long headerId, Long tenantId, HttpServletRequest request) throws Exception{
//查询单据主表信息 //查询单据主表信息
DepotHead depotHead=null; DepotHead depotHead =depotHeadMapper.selectByPrimaryKey(headerId);
try{ //获得当前操作人
depotHead =depotHeadMapper.selectByPrimaryKey(headerId); User userInfo=userService.getCurrentUser();
//获得当前操作人 //首先回收序列号,如果是调拨,不用处理序列号
User userInfo=userService.getCurrentUser(); if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())
//首先回收序列号,如果是调拨,不用处理序列号 &&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())){
if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) List<DepotItem> depotItemList = getListByHeaderId(headerId);
&&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())){ for(DepotItem depotItem : depotItemList){
List<DepotItem> depotItemList = getListByHeaderId(headerId); Material material= materialService.getMaterial(depotItem.getMaterialId());
for(DepotItem depotItem : depotItemList){ if(material==null){
Material material= materialService.getMaterial(depotItem.getMaterialId()); continue;
if(material==null){ }
continue; if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())){
} serialNumberService.cancelSerialNumber(depotItem.getMaterialId(),depotItem.getHeaderId(),
if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())){ (depotItem.getBasicNumber()==null?0:depotItem.getBasicNumber()).intValue(), userInfo);
serialNumberService.cancelSerialNumber(depotItem.getMaterialId(),depotItem.getHeaderId(),
(depotItem.getBasicNumber()==null?0:depotItem.getBasicNumber()).intValue(), userInfo);
}
} }
} }
//删除单据的明细 }
deleteDepotItemHeadId(headerId); //删除单据的明细
JSONArray rowArr = JSONArray.parseArray(rows); deleteDepotItemHeadId(headerId);
if (null != rowArr) { JSONArray rowArr = JSONArray.parseArray(rows);
for (int i = 0; i < rowArr.size(); i++) { if (null != rowArr) {
DepotItem depotItem = new DepotItem(); for (int i = 0; i < rowArr.size(); i++) {
JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i)); DepotItem depotItem = new DepotItem();
depotItem.setHeaderId(headerId); JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i));
Long materialExtendId = rowObj.getLong("MaterialExtendId"); depotItem.setHeaderId(headerId);
Long materialId = materialExtendService.getMaterialExtend(materialExtendId).getMaterialId(); Long materialExtendId = rowObj.getLong("MaterialExtendId");
depotItem.setMaterialId(materialId); Long materialId = materialExtendService.getMaterialExtend(materialExtendId).getMaterialId();
depotItem.setMaterialExtendId(rowObj.getLong("MaterialExtendId")); depotItem.setMaterialId(materialId);
depotItem.setMaterialUnit(rowObj.getString("Unit")); depotItem.setMaterialExtendId(rowObj.getLong("MaterialExtendId"));
if (StringUtil.isExist(rowObj.get("OperNumber"))) { depotItem.setMaterialUnit(rowObj.getString("Unit"));
depotItem.setOperNumber(rowObj.getBigDecimal("OperNumber")); if (StringUtil.isExist(rowObj.get("OperNumber"))) {
try { depotItem.setOperNumber(rowObj.getBigDecimal("OperNumber"));
String Unit = rowObj.get("Unit").toString(); try {
BigDecimal oNumber = rowObj.getBigDecimal("OperNumber"); String Unit = rowObj.get("Unit").toString();
//以下进行单位换算 BigDecimal oNumber = rowObj.getBigDecimal("OperNumber");
String unitName = materialService.findUnitName(materialId); //查询计量单位名称 //以下进行单位换算
if (!StringUtil.isEmpty(unitName)) { String unitName = materialService.findUnitName(materialId); //查询计量单位名称
String unitList = unitName.substring(0, unitName.indexOf("(")); if (!StringUtil.isEmpty(unitName)) {
String ratioList = unitName.substring(unitName.indexOf("(")); String unitList = unitName.substring(0, unitName.indexOf("("));
String basicUnit = unitList.substring(0, unitList.indexOf(",")); //基本单位 String ratioList = unitName.substring(unitName.indexOf("("));
String otherUnit = unitList.substring(unitList.indexOf(",") + 1); //副单位 String basicUnit = unitList.substring(0, unitList.indexOf(",")); //基本单位
Integer ratio = Integer.parseInt(ratioList.substring(ratioList.indexOf(":") + 1).replace(")", "")); //比例 String otherUnit = unitList.substring(unitList.indexOf(",") + 1); //副单位
if (Unit.equals(basicUnit)) { //如果等于基础单位 Integer ratio = Integer.parseInt(ratioList.substring(ratioList.indexOf(":") + 1).replace(")", "")); //比例
depotItem.setBasicNumber(oNumber); //数量一致 if (Unit.equals(basicUnit)) { //如果等于基础单位
} else if (Unit.equals(otherUnit)) { //如果等于副单位 depotItem.setBasicNumber(oNumber); //数量一致
depotItem.setBasicNumber(oNumber.multiply(new BigDecimal(ratio)) ); //数量乘以比例 } else if (Unit.equals(otherUnit)) { //如果等于副单位
} depotItem.setBasicNumber(oNumber.multiply(new BigDecimal(ratio)) ); //数量乘以比例
} else {
depotItem.setBasicNumber(oNumber); //其他情况
} }
} catch (Exception e) { } else {
logger.error(">>>>>>>>>>>>>>>>>>>设置基础数量异常", e); depotItem.setBasicNumber(oNumber); //其他情况
} }
} catch (Exception e) {
logger.error(">>>>>>>>>>>>>>>>>>>设置基础数量异常", e);
} }
if (StringUtil.isExist(rowObj.get("UnitPrice"))) { }
depotItem.setUnitPrice(rowObj.getBigDecimal("UnitPrice")); if (StringUtil.isExist(rowObj.get("UnitPrice"))) {
} depotItem.setUnitPrice(rowObj.getBigDecimal("UnitPrice"));
if (StringUtil.isExist(rowObj.get("TaxUnitPrice"))) { }
depotItem.setTaxUnitPrice(rowObj.getBigDecimal("TaxUnitPrice")); if (StringUtil.isExist(rowObj.get("TaxUnitPrice"))) {
} depotItem.setTaxUnitPrice(rowObj.getBigDecimal("TaxUnitPrice"));
if (StringUtil.isExist(rowObj.get("AllPrice"))) { }
depotItem.setAllPrice(rowObj.getBigDecimal("AllPrice")); if (StringUtil.isExist(rowObj.get("AllPrice"))) {
} depotItem.setAllPrice(rowObj.getBigDecimal("AllPrice"));
}
depotItem.setRemark(rowObj.getString("Remark"));
if (rowObj.get("DepotId") != null && !StringUtil.isEmpty(rowObj.get("DepotId").toString())) {
depotItem.setDepotId(rowObj.getLong("DepotId"));
}
if (rowObj.get("AnotherDepotId") != null && !StringUtil.isEmpty(rowObj.get("AnotherDepotId").toString())) {
depotItem.setAnotherDepotId(rowObj.getLong("AnotherDepotId"));
}
if (StringUtil.isExist(rowObj.get("TaxRate"))) {
depotItem.setTaxRate(rowObj.getBigDecimal("TaxRate"));
}
if (StringUtil.isExist(rowObj.get("TaxMoney"))) {
depotItem.setTaxMoney(rowObj.getBigDecimal("TaxMoney"));
}
if (StringUtil.isExist(rowObj.get("TaxLastMoney"))) {
depotItem.setTaxLastMoney(rowObj.getBigDecimal("TaxLastMoney"));
}
if (rowObj.get("MType") != null) {
depotItem.setMaterialType(rowObj.getString("MType"));
}
if (rowObj.get("Remark") != null) {
depotItem.setRemark(rowObj.getString("Remark")); depotItem.setRemark(rowObj.getString("Remark"));
if (rowObj.get("DepotId") != null && !StringUtil.isEmpty(rowObj.get("DepotId").toString())) { }
depotItem.setDepotId(rowObj.getLong("DepotId")); //出库时判断库存是否充足
} if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())){
if (rowObj.get("AnotherDepotId") != null && !StringUtil.isEmpty(rowObj.get("AnotherDepotId").toString())) { if(depotItem==null){
depotItem.setAnotherDepotId(rowObj.getLong("AnotherDepotId")); continue;
}
if (StringUtil.isExist(rowObj.get("TaxRate"))) {
depotItem.setTaxRate(rowObj.getBigDecimal("TaxRate"));
}
if (StringUtil.isExist(rowObj.get("TaxMoney"))) {
depotItem.setTaxMoney(rowObj.getBigDecimal("TaxMoney"));
}
if (StringUtil.isExist(rowObj.get("TaxLastMoney"))) {
depotItem.setTaxLastMoney(rowObj.getBigDecimal("TaxLastMoney"));
} }
if (rowObj.get("MType") != null) { Material material= materialService.getMaterial(depotItem.getMaterialId());
depotItem.setMaterialType(rowObj.getString("MType")); if(material==null){
continue;
} }
if (rowObj.get("Remark") != null) { BigDecimal stock = getStockByParam(depotItem.getDepotId(),depotItem.getMaterialId(),null,null,tenantId);
depotItem.setRemark(rowObj.getString("Remark")); BigDecimal thisBasicNumber = depotItem.getBasicNumber()==null?BigDecimal.ZERO:depotItem.getBasicNumber();
if(systemConfigService.getMinusStockFlag() == false && stock.compareTo(thisBasicNumber)<0){
throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_CODE,
String.format(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_MSG,material==null?"":material.getName()));
} }
//出库时判断库存是否充足 //出库时处理序列号
if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())){ if(!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) {
if(depotItem==null){ //判断商品是否开启序列号,开启的收回序列号,未开启的跳过
continue; if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())) {
} //查询单据子表中开启序列号的数据列表
Material material= materialService.getMaterial(depotItem.getMaterialId()); serialNumberService.checkAndUpdateSerialNumber(depotItem, userInfo);
if(material==null){
continue;
}
BigDecimal stock = getStockByParam(depotItem.getDepotId(),depotItem.getMaterialId(),null,null,tenantId);
BigDecimal thisBasicNumber = depotItem.getBasicNumber()==null?BigDecimal.ZERO:depotItem.getBasicNumber();
if(systemConfigService.getMinusStockFlag() == false && stock.compareTo(thisBasicNumber)<0){
throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_CODE,
String.format(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_MSG,material==null?"":material.getName()));
}
//出库时处理序列号
if(!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) {
//判断商品是否开启序列号,开启的收回序列号,未开启的跳过
if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())) {
//查询单据子表中开启序列号的数据列表
serialNumberService.checkAndUpdateSerialNumber(depotItem, userInfo);
}
} }
} }
this.insertDepotItemWithObj(depotItem);
//更新当前库存
updateCurrentStock(depotItem,tenantId);
} }
this.insertDepotItemWithObj(depotItem);
//更新当前库存
updateCurrentStock(depotItem,tenantId);
} }
}catch(Exception e){
JshException.writeFail(logger, e);
} }
} }
/** /**
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment