MES
原材料库存转库存和成品库存转库存bug修复
master
xs 8 months ago
parent 6c41a9d11f
commit b2e791a777

@ -103,7 +103,7 @@ public interface RemoteMesService {
public R<?> start5thFloorInstall(@RequestBody MesPdaProductPlanVo mesPdaProductPlanVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); public R<?> start5thFloorInstall(@RequestBody MesPdaProductPlanVo mesPdaProductPlanVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/** /**
* 5 * 5
* *
* @param mesPdaProductPlanVo * @param mesPdaProductPlanVo
* @param source * @param source
@ -132,7 +132,7 @@ public interface RemoteMesService {
* @return * @return
*/ */
@PostMapping("/saleOrder/transferSaleOrders") @PostMapping("/saleOrder/transferSaleOrders")
public R<Boolean> transferSaleOrders(@RequestBody MesSaleOrderTransferVo mesSaleOrderTransferVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); public R<?> transferSaleOrders(@RequestBody MesSaleOrderTransferVo mesSaleOrderTransferVo,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/** /**

@ -0,0 +1,35 @@
package com.hw.mes.api.domain.vo;
import com.hw.mes.api.domain.MesBaseBarcodeInfo;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* @Description: VO
* @ClassName: MesSaleOrderTransferVo
* @Author : xins
* @Date :2024-09-04 14:21
* @Version :1.0
*/
@Data
public class MesBaseBarcodeInfoTransferVo {
//新的销售订单ID
@NotNull(message = "销售订单Id必须输入")
private Long saleOrderId;
//新的销售订单号
@NotEmpty(message = "销售订单号必须输入")
private String saleOrderCode;
//安全库存标识
@NotEmpty(message = "安全库存标识必须输入")
private String safeFlag;
//条码内容
@NotEmpty(message = "条码内容必须输入")
private String barcodeInfo;
}

@ -17,12 +17,12 @@ import java.util.List;
@Data @Data
public class MesSaleOrderTransferVo { public class MesSaleOrderTransferVo {
//转换的条码信息 // 转换的条码信息
@NotNull(message = "条码信息不能为空") @NotNull(message = "条码信息不能为空")
private List<MesBaseBarcodeInfo> mesBaseBarcodeInfos; private List<MesBaseBarcodeInfoTransferVo> mesBaseBarcodeInfoTransferVos;
//转换数量 //转换数量
@NotNull(message = "转换不能为空") @NotNull(message = "转换数量不能为空")
private BigDecimal transferAmount; private BigDecimal transferAmount;
//老的销售订单ID //老的销售订单ID

@ -77,7 +77,7 @@ public class RemoteMesFallbackFactory implements FallbackFactory<RemoteMesServic
} }
@Override @Override
public R<Boolean> transferSaleOrders(MesSaleOrderTransferVo mesSaleOrderTransferVo, String source) { public R<?> transferSaleOrders(MesSaleOrderTransferVo mesSaleOrderTransferVo,String source) {
return R.fail("销售订单信息转换失败:" + throwable.getMessage()); return R.fail("销售订单信息转换失败:" + throwable.getMessage());
} }

@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse;
import com.hw.common.core.domain.R; import com.hw.common.core.domain.R;
import com.hw.common.security.annotation.InnerAuth; import com.hw.common.security.annotation.InnerAuth;
import com.hw.mes.api.domain.MesBaseBarcodeInfo;
import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo; import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -27,14 +28,13 @@ import com.hw.common.core.web.page.TableDataInfo;
/** /**
* Controller * Controller
* *
* @author Yinq * @author Yinq
* @date 2024-02-19 * @date 2024-02-19
*/ */
@RestController @RestController
@RequestMapping("/saleOrder") @RequestMapping("/saleOrder")
public class MesSaleOrderController extends BaseController public class MesSaleOrderController extends BaseController {
{
@Autowired @Autowired
private IMesSaleOrderService mesSaleOrderService; private IMesSaleOrderService mesSaleOrderService;
@ -44,8 +44,7 @@ public class MesSaleOrderController extends BaseController
*/ */
@RequiresPermissions("mes:saleOrder:list") @RequiresPermissions("mes:saleOrder:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(MesSaleOrder mesSaleOrder) public TableDataInfo list(MesSaleOrder mesSaleOrder) {
{
startPage(); startPage();
List<MesSaleOrder> list = mesSaleOrderService.selectMesSaleOrderJoinMaterialList(mesSaleOrder); List<MesSaleOrder> list = mesSaleOrderService.selectMesSaleOrderJoinMaterialList(mesSaleOrder);
return getDataTable(list); return getDataTable(list);
@ -57,8 +56,7 @@ public class MesSaleOrderController extends BaseController
@RequiresPermissions("mes:saleOrder:export") @RequiresPermissions("mes:saleOrder:export")
@Log(title = "销售订单信息", businessType = BusinessType.EXPORT) @Log(title = "销售订单信息", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, MesSaleOrder mesSaleOrder) public void export(HttpServletResponse response, MesSaleOrder mesSaleOrder) {
{
List<MesSaleOrder> list = mesSaleOrderService.selectMesSaleOrderList(mesSaleOrder); List<MesSaleOrder> list = mesSaleOrderService.selectMesSaleOrderList(mesSaleOrder);
ExcelUtil<MesSaleOrder> util = new ExcelUtil<MesSaleOrder>(MesSaleOrder.class); ExcelUtil<MesSaleOrder> util = new ExcelUtil<MesSaleOrder>(MesSaleOrder.class);
util.exportExcel(response, list, "销售订单信息数据"); util.exportExcel(response, list, "销售订单信息数据");
@ -69,8 +67,7 @@ public class MesSaleOrderController extends BaseController
*/ */
@RequiresPermissions("mes:saleOrder:query") @RequiresPermissions("mes:saleOrder:query")
@GetMapping(value = "/{saleOrderId}") @GetMapping(value = "/{saleOrderId}")
public AjaxResult getInfo(@PathVariable("saleOrderId") Long saleOrderId) public AjaxResult getInfo(@PathVariable("saleOrderId") Long saleOrderId) {
{
return success(mesSaleOrderService.selectMesSaleOrderBySaleOrderId(saleOrderId)); return success(mesSaleOrderService.selectMesSaleOrderBySaleOrderId(saleOrderId));
} }
@ -80,8 +77,7 @@ public class MesSaleOrderController extends BaseController
@RequiresPermissions("mes:saleOrder:add") @RequiresPermissions("mes:saleOrder:add")
@Log(title = "销售订单信息", businessType = BusinessType.INSERT) @Log(title = "销售订单信息", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody MesSaleOrder mesSaleOrder) public AjaxResult add(@RequestBody MesSaleOrder mesSaleOrder) {
{
return toAjax(mesSaleOrderService.insertMesSaleOrder(mesSaleOrder)); return toAjax(mesSaleOrderService.insertMesSaleOrder(mesSaleOrder));
} }
@ -91,8 +87,7 @@ public class MesSaleOrderController extends BaseController
@RequiresPermissions("mes:saleOrder:edit") @RequiresPermissions("mes:saleOrder:edit")
@Log(title = "销售订单信息", businessType = BusinessType.UPDATE) @Log(title = "销售订单信息", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody MesSaleOrder mesSaleOrder) public AjaxResult edit(@RequestBody MesSaleOrder mesSaleOrder) {
{
return toAjax(mesSaleOrderService.updateMesSaleOrder(mesSaleOrder)); return toAjax(mesSaleOrderService.updateMesSaleOrder(mesSaleOrder));
} }
@ -101,23 +96,24 @@ public class MesSaleOrderController extends BaseController
*/ */
@RequiresPermissions("mes:saleOrder:remove") @RequiresPermissions("mes:saleOrder:remove")
@Log(title = "销售订单信息", businessType = BusinessType.DELETE) @Log(title = "销售订单信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{saleOrderIds}") @DeleteMapping("/{saleOrderIds}")
public AjaxResult remove(@PathVariable Long[] saleOrderIds) public AjaxResult remove(@PathVariable Long[] saleOrderIds) {
{
return toAjax(mesSaleOrderService.deleteMesSaleOrderBySaleOrderIds(saleOrderIds)); return toAjax(mesSaleOrderService.deleteMesSaleOrderBySaleOrderIds(saleOrderIds));
} }
/** /**
* *
*/ */
@InnerAuth @InnerAuth
@Log(title = "销售订单信息", businessType = BusinessType.TRANSFER) @Log(title = "销售订单信息", businessType = BusinessType.TRANSFER)
@PostMapping(value="/transferSaleOrders") @PostMapping(value = "/transferSaleOrders")
public R<Boolean> transferSaleOrders(@RequestBody MesSaleOrderTransferVo mesSaleOrderTransferVo) public R<Boolean> transferSaleOrders(@RequestBody MesSaleOrderTransferVo mesSaleOrderTransferVo) {
{ try {
return R.ok(mesSaleOrderService.transferSaleOrders(mesSaleOrderTransferVo)); return R.ok(mesSaleOrderService.transferSaleOrders(mesSaleOrderTransferVo));
} catch (Exception e) {
return R.fail(e.getMessage());
}
} }
} }

@ -2,6 +2,7 @@ package com.hw.mes.service;
import java.util.List; import java.util.List;
import com.hw.mes.api.domain.MesBaseBarcodeInfo;
import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo; import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo;
import com.hw.mes.domain.MesSaleOrder; import com.hw.mes.domain.MesSaleOrder;

@ -8,6 +8,7 @@ import com.hw.common.core.utils.DateUtils;
import com.hw.common.core.utils.StringUtils; import com.hw.common.core.utils.StringUtils;
import com.hw.common.security.utils.SecurityUtils; import com.hw.common.security.utils.SecurityUtils;
import com.hw.mes.api.domain.MesBaseBarcodeInfo; import com.hw.mes.api.domain.MesBaseBarcodeInfo;
import com.hw.mes.api.domain.vo.MesBaseBarcodeInfoTransferVo;
import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo; import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo;
import com.hw.mes.mapper.MesBaseBarcodeInfoMapper; import com.hw.mes.mapper.MesBaseBarcodeInfoMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -144,14 +145,18 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService {
mesSaleOrderMapper.updateMesSaleOrder(newSaleOrder); mesSaleOrderMapper.updateMesSaleOrder(newSaleOrder);
} }
List<MesBaseBarcodeInfo> mesBaseBarcodeInfos = mesSaleOrderTransferVo.getMesBaseBarcodeInfos(); List<MesBaseBarcodeInfoTransferVo> mesBaseBarcodeInfoTransferVos = mesSaleOrderTransferVo.getMesBaseBarcodeInfoTransferVos();
int updateSize = 0; int updateSize = 0;
for (MesBaseBarcodeInfo mesBaseBarcodeInfo : mesBaseBarcodeInfos) { for (MesBaseBarcodeInfoTransferVo mesBaseBarcodeInfoTransferVo : mesBaseBarcodeInfoTransferVos) {
MesBaseBarcodeInfo dbMesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(mesBaseBarcodeInfo.getBarcodeInfo()); MesBaseBarcodeInfo dbMesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(mesBaseBarcodeInfoTransferVo.getBarcodeInfo());
if (dbMesBaseBarcodeInfo == null) { if (dbMesBaseBarcodeInfo == null) {
return false; return false;
} }
MesBaseBarcodeInfo mesBaseBarcodeInfo = new MesBaseBarcodeInfo();
mesBaseBarcodeInfo.setBarcodeId(dbMesBaseBarcodeInfo.getBarcodeId()); mesBaseBarcodeInfo.setBarcodeId(dbMesBaseBarcodeInfo.getBarcodeId());
mesBaseBarcodeInfo.setSaleOrderId(mesBaseBarcodeInfoTransferVo.getSaleOrderId());
mesBaseBarcodeInfo.setSaleorderCode(mesBaseBarcodeInfoTransferVo.getSaleOrderCode());
mesBaseBarcodeInfo.setSafeFlag(mesBaseBarcodeInfoTransferVo.getSafeFlag());
mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getUsername()); mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getUsername());
mesBaseBarcodeInfo.setUpdateTime(DateUtils.getNowDate()); mesBaseBarcodeInfo.setUpdateTime(DateUtils.getNowDate());
updateSize += mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); updateSize += mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo);

@ -5,6 +5,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.hw.common.core.constant.Constants;
import com.hw.common.core.constant.MesConstants; import com.hw.common.core.constant.MesConstants;
import com.hw.common.core.constant.SecurityConstants; import com.hw.common.core.constant.SecurityConstants;
import com.hw.common.core.constant.WmsConstants; import com.hw.common.core.constant.WmsConstants;
@ -16,6 +17,7 @@ import com.hw.mes.api.RemoteMesService;
import com.hw.mes.api.domain.MesBaseBarcodeInfo; import com.hw.mes.api.domain.MesBaseBarcodeInfo;
import com.hw.mes.api.domain.MesBaseMaterialInfo; import com.hw.mes.api.domain.MesBaseMaterialInfo;
import com.hw.mes.api.domain.MesBaseStationInfo; import com.hw.mes.api.domain.MesBaseStationInfo;
import com.hw.mes.api.domain.vo.MesBaseBarcodeInfoTransferVo;
import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo; import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo;
import com.hw.wms.config.WmsConfig; import com.hw.wms.config.WmsConfig;
import com.hw.wms.domain.WmsBaseLocation; import com.hw.wms.domain.WmsBaseLocation;
@ -222,8 +224,8 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService {
throw new ServiceException("没有销售订单成品库存信息"); throw new ServiceException("没有销售订单成品库存信息");
} }
for(WmsStockTotal stockTotal:stockTotalList){ for (WmsStockTotal stockTotal : stockTotalList) {
if(stockTotal.getProductId().equals(0L)){ if (stockTotal.getProductId().equals(0L)) {
stockTotal.setMaterialCode("1111|222"); stockTotal.setMaterialCode("1111|222");
} }
} }
@ -439,21 +441,21 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService {
throw new ServiceException("没有可转库存明细"); throw new ServiceException("没有可转库存明细");
} }
if (wmsProductStocks.size() < transferAmount.intValue()) { if (wmsProductStocks.size() < transferAmount.intValue()) {
throw new ServiceException("可转库存明细数量为%s", wmsProductStocks.size()); throw new ServiceException("可转库存明细数量为" + wmsProductStocks.size());
} }
List<MesBaseBarcodeInfo> mesBaseBarcodeInfos = new ArrayList<>(); List<MesBaseBarcodeInfoTransferVo> mesBaseBarcodeInfoTransferVos = new ArrayList<>();
for (WmsProductStock wmsProductStock : wmsProductStocks) { for (WmsProductStock wmsProductStock : wmsProductStocks) {
MesBaseBarcodeInfo mesBaseBarcodeInfo = new MesBaseBarcodeInfo(); MesBaseBarcodeInfoTransferVo mesBaseBarcodeInfoTransferVo = new MesBaseBarcodeInfoTransferVo();
mesBaseBarcodeInfo.setSaleOrderId(saleOrderId); mesBaseBarcodeInfoTransferVo.setSaleOrderId(saleOrderId);
mesBaseBarcodeInfo.setSaleorderCode(saleorderCode); mesBaseBarcodeInfoTransferVo.setSaleOrderCode(saleorderCode);
mesBaseBarcodeInfo.setSafeFlag(safeFlag); mesBaseBarcodeInfoTransferVo.setSafeFlag(safeFlag);
mesBaseBarcodeInfo.setBarcodeInfo(wmsProductStock.getProductBatch()); mesBaseBarcodeInfoTransferVo.setBarcodeInfo(wmsProductStock.getProductBatch());
mesBaseBarcodeInfos.add(mesBaseBarcodeInfo); mesBaseBarcodeInfoTransferVos.add(mesBaseBarcodeInfoTransferVo);
wmsProductStock.setSafeFlag(safeFlag); wmsProductStock.setSafeFlag(safeFlag);
wmsProductStock.setSaleOrderId(saleOrderId); wmsProductStock.setSaleOrderId(saleOrderId);
wmsProductStock.setSaleorderCode(saleorderCode); wmsProductStock.setSaleorderCode(saleorderCode == null ? "" : saleorderCode);
wmsProductStock.setUpdateDate(new Date()); wmsProductStock.setUpdateDate(new Date());
wmsProductStock.setUpdateBy(SecurityUtils.getUsername()); wmsProductStock.setUpdateBy(SecurityUtils.getUsername());
wmsProductStockMapper.updateWmsProductStock(wmsProductStock); wmsProductStockMapper.updateWmsProductStock(wmsProductStock);
@ -464,13 +466,19 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService {
mesSaleOrderTransferVo.setOldSaleOrderId(wmsStockTotal.getSaleOrderId()); mesSaleOrderTransferVo.setOldSaleOrderId(wmsStockTotal.getSaleOrderId());
mesSaleOrderTransferVo.setNewSaleOrderId(saleOrderId); mesSaleOrderTransferVo.setNewSaleOrderId(saleOrderId);
mesSaleOrderTransferVo.setMaterialId(materialId); mesSaleOrderTransferVo.setMaterialId(materialId);
mesSaleOrderTransferVo.setMesBaseBarcodeInfos(mesBaseBarcodeInfos); mesSaleOrderTransferVo.setMesBaseBarcodeInfoTransferVos(mesBaseBarcodeInfoTransferVos);
R<Boolean> transferBaseBarcodeInfosResult = remoteMesService.transferSaleOrders(mesSaleOrderTransferVo, SecurityConstants.INNER); System.out.println(mesSaleOrderTransferVo.toString());
if (!transferBaseBarcodeInfosResult.getData()) {
throw new RuntimeException("销售订单信息转换失败"); R<?> transferBaseBarcodeInfosResult = remoteMesService.transferSaleOrders(mesSaleOrderTransferVo, SecurityConstants.INNER);
if (transferBaseBarcodeInfosResult.getCode() != Constants.SUCCESS) {//抛出异常,回滚事务
throw new RuntimeException(transferBaseBarcodeInfosResult.getMsg());
} }
// if (!transferBaseBarcodeInfosResult.getData()) {
// throw new RuntimeException("销售订单信息转换失败");
// }
return 1; return 1;
} }

@ -65,8 +65,8 @@ export function addInternalBarcode(data) {
}) })
} }
//根据原材料条码判断是否有半成品出库
export function checkSemiOutstock(query) { export function checkSemiOutstock(query) {
//根据原材料条码判断是否有半成品出库
return request({ return request({
url: '/wms/api/checkSemiOutstock', url: '/wms/api/checkSemiOutstock',
method: 'get', method: 'get',

@ -1235,9 +1235,21 @@ export default {
handleMaterialUsage(row) { handleMaterialUsage(row) {
this.materialUsageOpen = true; this.materialUsageOpen = true;
this.materialUsageList = []; this.materialUsageList = [];
this.loading = true;
//bom
let warehouseFloor = 0;
if(row.dispatchId === 2){
warehouseFloor = 3;
}else if(row.dispatchId === 3){
warehouseFloor = 4;
}else if(row.dispatchId === 4){
warehouseFloor = 5;
}
getMaterialUsages(row).then(response => { getMaterialUsages(row).then(response => {
let materialUsageList = response.data; let materialUsageList = response.data;
getStockTotalWithRawOutstocks({saleOrderId: row.saleOrderId}).then(response => { //ID
getStockTotalWithRawOutstocks({saleOrderId: row.saleOrderId,warehouseFloor:warehouseFloor}).then(response => {
let stockMapJson = response.data; let stockMapJson = response.data;
let totalAmountMap = stockMapJson.totalAmountMap; let totalAmountMap = stockMapJson.totalAmountMap;
let occupyAmountMap = stockMapJson.occupyAmountMap; let occupyAmountMap = stockMapJson.occupyAmountMap;
@ -1248,10 +1260,16 @@ export default {
objA.totalAmount = totalAmountMap[objA.materialId]; objA.totalAmount = totalAmountMap[objA.materialId];
objA.outstockAmount = outstockAmountMap[objA.materialId]; objA.outstockAmount = outstockAmountMap[objA.materialId];
objA.occupyAmount = occupyAmountMap[objA.materialId]; objA.occupyAmount = occupyAmountMap[objA.materialId];
objA.totalAmount = objA.totalAmount ? objA.totalAmount : 0;
objA.outstockAmount = objA.outstockAmount ? objA.outstockAmount : 0;
objA.occupyAmount = objA.occupyAmount ? objA.occupyAmount : 0;
objA.availableAmount = objA.totalAmount -objA.occupyAmount; objA.availableAmount = objA.totalAmount -objA.occupyAmount;
// return returnObj; // // return returnObj; //
}); });
this.loading = false;
this.materialUsageList = materialUsageList; this.materialUsageList = materialUsageList;
// console.log(this.materialUsageList) // console.log(this.materialUsageList)
}) })

@ -181,21 +181,6 @@
<el-col :span="20" :offset="4" :xs="20"> <el-col :span="20" :offset="4" :xs="20">
<el-divider content-position="center">库位库存明细信息</el-divider> <el-divider content-position="center">库位库存明细信息</el-divider>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-shopping-cart-1"
size="mini"
@click="handleTransfer"
v-hasPermi="['wms:stocktotal:transfer']"
v-if="type === STOCK_TYPE.RAW"
>转库存
</el-button>
</el-col>
</el-row>
<el-table v-loading="loadingTwo" :data="rawstockList" @selection-change="handleRawStockSelectionChange"> <el-table v-loading="loadingTwo" :data="rawstockList" @selection-change="handleRawStockSelectionChange">
<!-- <el-table-column label="原材料库存ID" align="center" prop="rawStockId" />--> <!-- <el-table-column label="原材料库存ID" align="center" prop="rawStockId" />-->
@ -235,6 +220,23 @@
<dict-tag :options="dict.type.wms_stock_complete_flag" :value="scope.row.completeFlag"/> <dict-tag :options="dict.type.wms_stock_complete_flag" :value="scope.row.completeFlag"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-shopping-cart-1"
v-if="type === STOCK_TYPE.RAW && scope.row.instockBatch.indexOf(RAW_BARCODE_VIRTUAL.EXTERNAL_VIRTUAL) < 0 && scope.row.instockBatch.indexOf(RAW_BARCODE_VIRTUAL.INTERNAL_VIRTUAL)<0"
@click="handleTransfer(scope.row)"
v-hasPermi="['wms:stocktotal:transfer']"
>转库存
</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="twoPTotal>0" v-show="twoPTotal>0"
@ -269,7 +271,7 @@
</el-form-item> </el-form-item>
<el-form-item label="待转数量" prop="transferAmount" v-if="this.transferType==='1'"> <el-form-item label="待转数量" prop="transferAmount" v-if="this.transferType==='1'">
<el-input-number v-model="form.transferAmount" placeholder="请输入待转库存数量"/> <el-input-number v-model="form.transferAmount" :min="1" step="1" placeholder="请输入待转库存数量"/>
</el-form-item> </el-form-item>
@ -283,7 +285,7 @@
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" :loading="submitLoading" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -298,14 +300,13 @@
</el-dialog> </el-dialog>
<el-dialog title="物料明细" :visible.sync="materialListOpen" width="560px" append-to-body> <el-dialog title="物料明细" :visible.sync="materialListOpen" width="560px" append-to-body>
<el-table :data="materialList"> <el-table :data="materialList">
<el-table-column label="序号" type="index" align="center"/> <el-table-column label="序号" type="index" align="center"/>
<el-table-column label="物料编码" align="center" prop="materialCode" /> <el-table-column label="物料编码" align="center" prop="materialCode"/>
<el-table-column label="物料名称" align="center" prop="materialName" /> <el-table-column label="物料名称" align="center" prop="materialName"/>
<el-table-column label="物料规格" align="center" prop="materialSpec" /> <el-table-column label="物料规格" align="center" prop="materialSpec"/>
</el-table> </el-table>
@ -436,15 +437,15 @@ export default {
VIRTUAL: "2" VIRTUAL: "2"
}, },
RAW_BARCODE_VIRTUAL:{ RAW_BARCODE_VIRTUAL: {
EXTERNAL_VIRTUAL:"VR",// EXTERNAL_VIRTUAL: "VR",//
INTERNAL_VIRTUAL:"RN",// INTERNAL_VIRTUAL: "RN",//
}, },
selectSaleOrderVisible: false, selectSaleOrderVisible: false,
submitLoading:false,
materialListOpen : false, materialListOpen: false,
materialList:[] materialList: []
}; };
}, },
watch: { watch: {
@ -637,10 +638,9 @@ export default {
// //
handleRawStockSelectionChange(selection) { handleRawStockSelectionChange(selection) {
return;
let index = 0; let index = 0;
selection.forEach(row => { selection.forEach(row => {
index = this.rawstockList.indexOf(row); index = this.rawstockList.indexOf(row);
}); });
this.instockBatches = selection.map((item, index1) => index + "-" + item.instockBatch); this.instockBatches = selection.map((item, index1) => index + "-" + item.instockBatch);
this.rawStockIds = selection.map((item, index1) => index + "-" + item.rawStockId); this.rawStockIds = selection.map((item, index1) => index + "-" + item.rawStockId);
@ -649,13 +649,25 @@ export default {
this.multiple = !selection.length this.multiple = !selection.length
}, },
handleTransfer() { handleTransfer(row) {
this.reset(); this.reset();
this.transferType = "2"; this.transferType = "2";
this.rawStockInfosStr = this.rawStockInfos.join("<br>"); let index = this.rawstockList.indexOf(row)
this.form.instockBatch = row.instockBatch
this.form.rawStockId = row.rawStockId
this.form.indexStockIds =[index + "-" + row.rawStockId];
this.form.index = index;
this.rawStockInfosStr = "序号:" + (index + 1) + ",物料编码:" + row.materialCode + " 物料名称:" + row.materialName + " 物料规格:" + row.materialSpec + " 数量:" + row.totalAmount + " 销售订单:" + (row.saleorderCode ? row.saleorderCode : "无");
this.open = true; this.open = true;
}, },
// handleTransfer() {
// this.reset();
// this.transferType = "2";
// this.rawStockInfosStr = this.rawStockInfos.join("<br>");
// this.open = true;
// },
handleSaleOrderSelect() { handleSaleOrderSelect() {
this.selectSaleOrderVisible = true; this.selectSaleOrderVisible = true;
}, },
@ -663,7 +675,8 @@ export default {
/** 提交选择销售订单按钮 */ /** 提交选择销售订单按钮 */
submitSelectSaleOrderForm() { submitSelectSaleOrderForm() {
let selectedRow = this.$refs.selectSaleOrderRef.selectedRow; let selectedRow = this.$refs.selectSaleOrderRef.selectedRow;
if(selectedRow.materialId!==this.form.materialId){ //
if (this.type === this.STOCK_TYPE.PRODUCT && selectedRow.materialId !== this.form.materialId) {
this.$modal.msgWarning("请选择相同物料的销售订单"); this.$modal.msgWarning("请选择相同物料的销售订单");
return; return;
} }
@ -675,36 +688,60 @@ export default {
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
this.submitLoading = true;
if (this.form.safeFlag === this.SAFE_FLAG.YES) { if (this.form.safeFlag === this.SAFE_FLAG.YES) {
this.form.saleOrderId = 0; this.form.saleOrderId = 0;
this.form.saleorderCode = null; this.form.saleorderCode = null;
} }
if (this.type === this.STOCK_TYPE.PRODUCT) { if (this.type === this.STOCK_TYPE.PRODUCT) { //
if(this.form.transferAmount < 1){
this.$modal.msgWarning('请输入整数');
this.submitLoading = false;
return;
}else if (!Number.isInteger(this.form.transferAmount)) {
this.$modal.msgWarning('请输入整数');
// this.value = Math.floor(value); //
this.submitLoading = false;
return;
}
transferProductStockTotal(this.form).then(response => { transferProductStockTotal(this.form).then(response => {
this.$modal.msgSuccess("转库存成功"); this.$modal.msgSuccess("转库存成功");
this.open = false; this.open = false;
this.getList(); this.getList();
this.getTwoList(); this.getTwoList();
}).finally(e=>{
this.submitLoading = false;
}); });
} else if (this.type === this.STOCK_TYPE.RAW) { } else if (this.type === this.STOCK_TYPE.RAW) {
if (this.transferType === '1') { if (this.transferType === '1') {//
if(this.form.transferAmount < 1){
this.$modal.msgWarning('待转数量请输入整数');
this.submitLoading = false;
return;
}else if (!Number.isInteger(this.form.transferAmount)) {
this.$modal.msgWarning('待转数量请输入整数');
// this.value = Math.floor(value); //
this.submitLoading = false;
return;
}
transferRawStockTotal(this.form).then(response => { transferRawStockTotal(this.form).then(response => {
this.$modal.msgSuccess("转库存成功"); this.$modal.msgSuccess("转库存成功");
this.open = false; this.open = false;
this.getList(); this.getList();
this.getTwoList(); this.getTwoList();
}).finally(e=>{
this.submitLoading = false;
}); });
} else if (this.transferType === '2') { } else if (this.transferType === '2') {
this.form.indexStockIds = this.rawStockIds; if (this.form.instockBatch.indexOf(this.RAW_BARCODE_VIRTUAL.EXTERNAL_VIRTUAL) >= 0 || this.form.instockBatch.indexOf(this.RAW_BARCODE_VIRTUAL.INTERNAL_VIRTUAL) >= 0) {
for(const instockBatchStr of this.instockBatches){ this.$modal.msgWarning("序号:" + (parseInt(this.form.index) + 1) + ",是虚拟合并的物料,不能转库存");
let instockBatchStrArr = instockBatchStr.split("-"); this.submitLoading = false;
let instockBatchIndex = parseInt(instockBatchStrArr[0]); return;
let instockBatch = instockBatchStrArr[1];
if(instockBatch.indexOf(this.RAW_BARCODE_VIRTUAL.EXTERNAL_VIRTUAL) >=0 || instockBatch.indexOf(this.RAW_BARCODE_VIRTUAL.INTERNAL_VIRTUAL) >=0){
this.$modal.msgSuccess("序号:"+(instockBatchIndex+1)+",是虚拟合并的物料,不能转库存");
return;
}
} }
transferRaw(this.form).then(response => { transferRaw(this.form).then(response => {
@ -712,6 +749,8 @@ export default {
this.open = false; this.open = false;
this.getList(); this.getList();
this.getTwoList(); this.getTwoList();
}).finally(e=>{
this.submitLoading = false;
}); });
} }
} }
@ -733,9 +772,9 @@ export default {
}, },
handleViewMaterialInfos(row){ handleViewMaterialInfos(row) {
this.materialListOpen = true; this.materialListOpen = true;
selectMaterialInfosByVirtualMaterialId({materialId:row.materialId}).then(response => { selectMaterialInfosByVirtualMaterialId({materialId: row.materialId}).then(response => {
this.materialList = response.rows; this.materialList = response.rows;
}); });
} }

Loading…
Cancel
Save