Browse Source

[fix]

委外加工 委外入库
修改添加、委外入库列表页面;
修改委外入库service、controller方法;
dev
王晓迪 4 days ago
parent
commit
b7c3207a99
  1. 19
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceStorageOrderController.java
  2. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceStorageOrderService.java
  3. 86
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceStorageOrderServiceImpl.java
  4. 260
      ruoyi-admin/src/main/resources/templates/system/outsource_order/addStorage.html
  5. 27
      ruoyi-admin/src/main/resources/templates/system/outsource_storage/storage.html

19
ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceStorageOrderController.java

@ -2,6 +2,7 @@ package com.ruoyi.system.controller;
import java.util.List; import java.util.List;
import com.ruoyi.system.domain.OutsourceStorage;
import com.ruoyi.system.service.IOutsourceStorageOrderService; import com.ruoyi.system.service.IOutsourceStorageOrderService;
import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.domain.WarehouseStorageOrder;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
@ -82,10 +83,10 @@ public class OutsourceStorageOrderController extends BaseController
@Log(title = "委外入库", businessType = BusinessType.INSERT) @Log(title = "委外入库", businessType = BusinessType.INSERT)
@PostMapping("/addStorage") @PostMapping("/addStorage")
@ResponseBody @ResponseBody
public AjaxResult addSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder) public AjaxResult addSave(@RequestBody OutsourceStorage outsourceStorage)
{ {
System.out.println(warehouseStorageOrder); // System.out.println(warehouseStorageOrder);
return toAjax(outsourceStorageOrderService.insertWarehouseStorageOrder(warehouseStorageOrder)); return toAjax(outsourceStorageOrderService.insertWarehouseStorageOrder(outsourceStorage));
} }
/** /**
@ -123,4 +124,16 @@ public class OutsourceStorageOrderController extends BaseController
{ {
return toAjax(outsourceStorageOrderService.deleteWarehouseStorageOrderByWarehouseStorageIds(ids)); return toAjax(outsourceStorageOrderService.deleteWarehouseStorageOrderByWarehouseStorageIds(ids));
} }
/**
* 委外入库详情
*/
@RequiresPermissions("system:storage:detail")
@GetMapping("/detail/{warehouseStorageCode}")
public String detail(@PathVariable("warehouseStorageCode") String warehouseStorageCode, ModelMap mmap)
{
OutsourceStorage outsourceStorage = outsourceStorageOrderService.selectStorageOrderByWarehouseStorageCode(warehouseStorageCode);
mmap.put("outsourceStorage", outsourceStorage);
return prefix + "/detail";
}
} }

5
ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceStorageOrderService.java

@ -1,6 +1,7 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import com.ruoyi.system.domain.OutsourceStorage;
import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.domain.WarehouseStorageOrder;
import java.util.List; import java.util.List;
@ -35,7 +36,7 @@ public interface IOutsourceStorageOrderService
* @param warehouseStorageOrder 委外入库 * @param warehouseStorageOrder 委外入库
* @return 结果 * @return 结果
*/ */
public int insertWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder); public int insertWarehouseStorageOrder(OutsourceStorage outsourceStorage);
/** /**
* 修改委外入库 * 修改委外入库
@ -60,4 +61,6 @@ public interface IOutsourceStorageOrderService
* @return 结果 * @return 结果
*/ */
public int deleteWarehouseStorageOrderByWarehouseStorageId(Long warehouseStorageId); public int deleteWarehouseStorageOrderByWarehouseStorageId(Long warehouseStorageId);
OutsourceStorage selectStorageOrderByWarehouseStorageCode(String warehouseStorageCode);
} }

86
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceStorageOrderServiceImpl.java

@ -3,8 +3,12 @@ package com.ruoyi.system.service.impl;
import java.util.List; import java.util.List;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.system.domain.OutsourceStorage;
import com.ruoyi.system.domain.OutsourceStorageDetail;
import com.ruoyi.system.mapper.OutsourceStorageDetailMapper;
import com.ruoyi.system.service.IOutsourceStorageOrderService; import com.ruoyi.system.service.IOutsourceStorageOrderService;
import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.domain.WarehouseStorageOrder;
import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail;
@ -12,6 +16,7 @@ import com.ruoyi.warehouse.mapper.WarehouseStorageOrderMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
@ -31,6 +36,9 @@ public class OutsourceStorageOrderServiceImpl implements IOutsourceStorageOrderS
@Autowired @Autowired
private WarehouseStorageOrderMapper warehouseStorageOrderMapper; private WarehouseStorageOrderMapper warehouseStorageOrderMapper;
@Autowired
private OutsourceStorageDetailMapper outsourceStorageDetailMapper;
@Autowired @Autowired
private RedisCache redisCache; private RedisCache redisCache;
@ -50,25 +58,82 @@ public class OutsourceStorageOrderServiceImpl implements IOutsourceStorageOrderS
/** /**
* 新增委外入库 * 新增委外入库
* *
* @param warehouseStorageOrder 委外入库 * @param outsourceStorage 委外入库
* @return 结果 * @return 结果
*/ */
@Transactional @Transactional
@Override @Override
public int insertWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder) public int insertWarehouseStorageOrder(OutsourceStorage outsourceStorage)
{ {
WarehouseStorageOrder warehouseStorageOrder = new WarehouseStorageOrder();
String loginName = ShiroUtils.getLoginName(); String loginName = ShiroUtils.getLoginName();
warehouseStorageOrder.setCreateBy(loginName);
warehouseStorageOrder.setCreateTime(DateUtils.getNowDate()); warehouseStorageOrder.setCreateTime(DateUtils.getNowDate());
warehouseStorageOrder.setWarehouseOrderType("3"); warehouseStorageOrder.setWarehouseOrderType("3");
warehouseStorageOrder.setWarehouseStorageType("4"); warehouseStorageOrder.setWarehouseStorageType("4");
warehouseStorageOrder.setWarehouseStorageStatus("0");
warehouseStorageOrder.setWarehouseQualityStatus("0");
String warehouseStorageCode = redisCache.generateBillNo("RK"); String warehouseStorageCode = redisCache.generateBillNo("RK");
warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode); warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode);
warehouseStorageOrder.setCreateBy(loginName); warehouseStorageOrder.setNotifyArrivedNum(outsourceStorage.getNotifyArrivedNum());
int rows = warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder); warehouseStorageOrder.setRelatedOrderCode(outsourceStorage.getRelatedOrderCode());
List<OutsourceStorageDetail> outsourceStorageDetails = outsourceStorage.getStorageDetailList();
if(StringUtils.isEmpty(outsourceStorageDetails)){
throw new BusinessException("新增委外入库单失败!入库单详情为空");
}
for (OutsourceStorageDetail detail:outsourceStorageDetails) {
detail.setWarehouseStorageCode(warehouseStorageCode);
outsourceStorageDetailMapper.insertOutsourceStorageDetail(detail);
}
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = new ArrayList<>();
// 使用 Map 分组
Map<String, List<OutsourceStorageDetail>> groupedByMaterialNo = outsourceStorageDetails.stream()
.collect(Collectors.groupingBy(OutsourceStorageDetail::getMaterialNo));
// 遍历 Map 的每一个条目
for (Map.Entry<String, List<OutsourceStorageDetail>> entry : groupedByMaterialNo.entrySet()) {
String materialNo = entry.getKey();
List<OutsourceStorageDetail> details = entry.getValue();
// 获取列表中的第一条记录
if (!details.isEmpty()) {
OutsourceStorageDetail firstDetail = details.get(0);
System.out.println("Material No: " + materialNo + ", First Detail: " + firstDetail);
WarehouseStorageOrderDetail warehouseStorageOrderDetail = generateWarehouseStorageOrderDetail(firstDetail);
warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode);
warehouseStorageOrderDetailList.add(warehouseStorageOrderDetail);
}
}
if(warehouseStorageOrderDetailList!=null){
warehouseStorageOrder.setWarehouseStorageOrderDetailList(warehouseStorageOrderDetailList);
insertWarehouseStorageOrderDetail(warehouseStorageOrder); insertWarehouseStorageOrderDetail(warehouseStorageOrder);
return rows;
} }
int rows = warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder);
return rows;
}
// 根据委外入库单详情生成仓库入库单详情
public WarehouseStorageOrderDetail generateWarehouseStorageOrderDetail(OutsourceStorageDetail outstorageDetail){
WarehouseStorageOrderDetail storageOrderDetail = new WarehouseStorageOrderDetail();
storageOrderDetail.setRelatedOrderCode(outstorageDetail.getOutsourceOrderNo());
storageOrderDetail.setWarehouseStorageStatus("0");
storageOrderDetail.setWarehouseQualityStatus("0");
storageOrderDetail.setWarehouseStorageType("4");
storageOrderDetail.setWarehouseOrderType("3");
storageOrderDetail.setNotifyArriveNum(outstorageDetail.getTakingMaterial().intValue());
storageOrderDetail.setMaterialNo(outstorageDetail.getMaterialNo());
storageOrderDetail.setMaterialName(outstorageDetail.getMaterialName());
storageOrderDetail.setMaterialType(outstorageDetail.getMaterialType());
storageOrderDetail.setMaterialPhotourl(outstorageDetail.getMaterialPhotoUrl());
storageOrderDetail.setMaterialProcessMethod(outstorageDetail.getProcessMethod());
storageOrderDetail.setMaterialDeptType(outstorageDetail.getDescription());
storageOrderDetail.setMaterialUnit(outstorageDetail.getUnit());
storageOrderDetail.setMaterialBrand(outstorageDetail.getBrand());
storageOrderDetail.setArrivedTime(DateUtils.getNowDate());
storageOrderDetail.setCreateBy(ShiroUtils.getLoginName());
storageOrderDetail.setCreateTime(DateUtils.getNowDate());
return storageOrderDetail;
}
/** /**
* 修改委外入库 * 修改委外入库
* *
@ -137,4 +202,15 @@ public class OutsourceStorageOrderServiceImpl implements IOutsourceStorageOrderS
} }
} }
} }
@Override
public OutsourceStorage selectStorageOrderByWarehouseStorageCode(String warehouseStorageCode){
OutsourceStorage outsourceStorage = new OutsourceStorage();
List<OutsourceStorageDetail> outsourceStorageDetails = outsourceStorageDetailMapper.selectOutsourceStorageDetailByStorageCode(warehouseStorageCode);
if(StringUtils.isEmpty(outsourceStorageDetails)){
throw new BusinessException("查询入库单详情失败!详情为空");
}
outsourceStorage.setStorageDetailList(outsourceStorageDetails);
return outsourceStorage;
}
} }

260
ruoyi-admin/src/main/resources/templates/system/outsource_order/addStorage.html

@ -6,10 +6,31 @@
<th:block th:include="include :: datetimepicker-css" /> <th:block th:include="include :: datetimepicker-css" />
<th:block th:include="include :: bootstrap-editable-css" /> <th:block th:include="include :: bootstrap-editable-css" />
</head> </head>
<style>
.col-sm-12.material-table{
height: 75px;
}
.hr-line-dashed {
border-top: 1px dashed #ddd;
margin-top: 20px; /* 调整间距 */
border-bottom: 1px dashed #ddd;
margin-bottom: 20px;
}
</style>
<body class="white-bg"> <body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> <div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-order-outsourceStorage-add" > <form class="form-horizontal m" id="form-order-outsourceStorage-add" >
<div class="col-xs-11" >
<label class="col-sm-2 control-label" style="margin-left: 10px;">已选择委外计划:</label>
<div class="col-sm-8">
<input id="outsourcePlanCode" name="outsourcePlanCode" class="form-control" type="text" readonly>
</div>
</div>
<div class="col-xs-11" style="margin-left: 60px;height: 20px;">
<div class="hr-line-dashed" >
</div>
</div>
<div class="container" id="material"> <div class="container" id="material">
</div> </div>
@ -17,19 +38,20 @@
<!-- 订单合计--> <!-- 订单合计-->
<div class="container"> <div class="container">
<div class="row"><h4 class="card-header">订单合计:</h4></div> <div class="row"><h4 class="card-header">订单合计:</h4></div>
<div class="form-group"> <div class="col-xs-12">
<label for="materialAmount" class="col-sm-2 col-form-label">物料合计:</label> <div class="col-sm-6">
<div class="col-sm-4"> <label for="materialAmount" class="col-sm-4 col-form-label">物料合计:</label>
<input type="text" class="form-control" value="0" id="materialAmount"> <div class="col-sm-6">
<input type="text" class="form-control" value="0" id="materialAmount" disabled>
</div> </div>
</div> </div>
<div class="form-group"> <div class="col-sm-6">
<label for="outsourceMaterialAmount" class="col-sm-2 col-form-label">委外数量合计:</label> <label for="nowStorageTotalAmount" class="col-sm-4 col-form-label">领料数量合计:</label>
<div class="col-sm-4"> <div class="col-sm-6">
<input type="text" class="form-control" value="0" id="outsourceMaterialAmount"> <input type="text" class="form-control" value="0" id="nowStorageTotalAmount" disabled>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -38,11 +60,11 @@
<th:block th:include="include :: datetimepicker-js" /> <th:block th:include="include :: datetimepicker-js" />
<th:block th:include="include :: bootstrap-table-editable-js" /> <th:block th:include="include :: bootstrap-table-editable-js" />
<script th:inline="javascript"> <script th:inline="javascript">
var prefix = ctx + "system/storage"; var prefix = ctx + "system/outsource_storage";
$("#form-order-outsourceStorage-add").validate({focusCleanup: true}); $("#form-order-outsourceStorage-add").validate({focusCleanup: true});
var outsourcePlanDetailList = []; var outsourcePlanDetailList = [];
// var chargeUnitDatas = [[${@dict.getType("charge_unit")}]] var processMethodDatas = [[${@dict.getType('processMethod')}]];
var formId = "form-plan-outsourceOrder-add"; var formId = "form-order-outsourceStorage-add";
var outsourcePlanCode = ''; var outsourcePlanCode = '';
var materialList = []; var materialList = [];
var tableIdList = []; var tableIdList = [];
@ -57,16 +79,16 @@
$(function() { $(function() {
originMaterial = outsourceOrderList[0].materials; originMaterial = outsourceOrderList[0].materials;
// 根据料号去重 // 根据料号去重
materials = mergeRecords(originMaterial); materials = mergeRecords(originMaterial);
outsourcePlanCode = outsourceOrderList[0].outsourcePlanCode
$("input[name='outsourcePlanCode']").val(outsourcePlanCode);
// 遍历委外计划详情信息
materials.forEach(function (material, index) { materials.forEach(function (material, index) {
var tableId = 'materialNo-' + (index+1); var tableId = 'materialNo-' + (index+1);
var materialTable = "bootstrap-table_" + tableId; var materialTable = "bootstrap-table_" + tableId;
tableIdList.push(materialTable); tableIdList.push(tableId);
// 创建物料信息的容器 // 创建物料信息的容器
var $tableWrapper = $('<div id="material-' + tableId + '"></div>'); var $tableWrapper = $('<div id="material-' + tableId + '"></div>');
// 将整个物料信息容器添加到页面 // 将整个物料信息容器添加到页面
@ -78,14 +100,14 @@
'<h3>' + '<h3>' +
'<span><strong>物料 ' + (index+1) + ': </strong> ' + '<strong>关联订单号: </strong></span>' + '<span class="correlationCodes" style="color: blue" id="correlationCodes-' + tableId + '"></span>' + '<span><strong>物料 ' + (index+1) + ': </strong> ' + '<strong>关联订单号: </strong></span>' + '<span class="correlationCodes" style="color: blue" id="correlationCodes-' + tableId + '"></span>' +
'</h3>' + '</h3>' +
'<div class="col-sm-12">' + '<div class="col-sm-12 material-table">' +
'<table class="table-materialNo" id="' + materialTable + '">' + '</table>' + '<table class="table-materialNo" id="' + materialTable + '">' + '</table>' +
'</div>' + '</div>' +
'</div>' + '</div>' +
'</div>'); '</div>');
$tableWrapper.append($headerDiv); $tableWrapper.append($headerDiv);
$(".correlationCodes").text(outsourceOrderList[0].outsourceOrderNo); $(".correlationCodes").text(material.orderDetails[0].correlationCodes);
$("#materialAmount").val(materials.length); $("#materialAmount").val(materials.length);
var materialObj = { var materialObj = {
@ -108,7 +130,7 @@
tables(materialTable, materialData); tables(materialTable, materialData);
var $MaterialNumDiv = var $MaterialNumDiv =
$('<div class="row">' + $('<div class="row" style="margin-top: 20px;margin-left: 10px;">' +
'<div class="form-group">' + '<div class="form-group">' +
'<div class="col-xs-12">' + '<div class="col-xs-12">' +
'<h3>' + '<h3>' +
@ -126,35 +148,40 @@
$tableWrapper.append($noProcessDiv); $tableWrapper.append($noProcessDiv);
}else{ }else{
material.orderDetails.forEach(function(detail, detailsIndex) { material.orderDetails.forEach(function(detail, detailsIndex) {
// console.log(processIndex);
var processSelectId = 'process-select-' + tableId + '_' + (detailsIndex+1); var processSelectId = 'process-select-' + tableId + '_' + (detailsIndex+1);
var processTableId = 'process-' + tableId + '_' + (detailsIndex+1); var processTableId = 'process-' + tableId + '_' + (detailsIndex+1);
switch (detail.chargeUnit) { switch (detail.chargeUnit) {
case "0": case "0":
detail.unitInfo = "按重量计"; detail.unitInfo = "按重量计";
detail.singleMaterialInfo = detail.singleMaterial + "kg";
break; break;
case "1": case "1":
detail.unitInfo = "按数量计"; detail.unitInfo = "按数量计";
detail.singleMaterialInfo = detail.singleMaterial + "个";
break; break;
case "2": case "2":
detail.unitInfo = "按面积计"; detail.unitInfo = "按面积计";
detail.singleMaterialInfo = detail.singleMaterial + "平方英寸";
break; break;
default:; default:;
} }
$processContent = $processContent =
$('<div class="card-header process_card" id="process-' + tableId + '_' + (detailsIndex+1) + '" >' + $('<div class="card-header process_card" id="process-' + tableId + '_' + (detailsIndex+1) + '" >' +
'<div class="row">' + '<div class="row" style="margin-left: 25px;height: 20px">' +
'<div class="card-text">' + '<div class="card-text">' +
'<h5>委外工序 ' + (detailsIndex+1) + ':' + '<h5>委外工序 ' + (detailsIndex+1) + ':' +
'<span class="processNo">' + detail.outsourceProcessNo + '</span>' + '-' + '<span style="color: blue" class="processNo">' + detail.outsourceProcessNo + '</span>' + '-' +
'<span class="processName">' + detail.outsourceProcessName + '</span>' + '<span style="color: blue" class="processName">' + detail.outsourceProcessName + '</span>' +
'</h5>' + '</h5>' +
'</div>' + '</div>' +
'<div class="col-sm-2" id="chargeUnit-'+processSelectId+'">' + '<div class="col-xs-12" style="padding-left: 0px;">' +
'<span class="chargeUnit">*计价单位:</span>' + '-' + '<div class="col-sm-12" style="padding-left: 0px;" id="chargeUnit-'+processSelectId+'">' +
'<span class="">' + detail.unitInfo + '</span>' + '<span class="chargeUnit" style="padding-right: 10px;">*计价单位:</span>' +
'<span class="singleMaterial">每个物料:</span>' + '<span class="chargeUnitInfo" style="padding-right: 80px;">' + detail.unitInfo + '</span>' +
'<span class="singleMaterialInfo">' + detail.singleMaterial + '</span>' + '<span class="singleMaterial" style="padding-right: 10px;">每个物料:</span>' +
'<span class="singleMaterialInfo">' + detail.singleMaterialInfo + '</span>' +
'</div>' +
'</div>' + '</div>' +
'</div>' + '</div>' +
'</div>'); '</div>');
@ -162,33 +189,39 @@
$tableWrapper.append($processContent); $tableWrapper.append($processContent);
$supplierheaderContent = $supplierheaderContent =
$('<div class="card-header suppplier_card" id = "supplier-' + processTableId + '_' + ' ">' + $('<div class="card-header suppplier_card" id = "supplier-' + processTableId + '_' + ' ">' +
'<div class="row">' + '<div class="col-xs-12">' +
'<div class="card-text">' + '<div class="col-sm-4" style="margin-top: 13px;padding-left: 10px;">' +
'<input type="radio" id="supplier-' + processTableId + '_' + '" name="supplier-' + processTableId + '" value="">' + '<input type="radio" id="supplier-' + processTableId + '" name="supplier-' + processTableId + '" value="" checked>' +
'<span class="supplierCode">' + detail.supplierCode + '</span>' + '-' + '<span class="supplierCode">' + detail.supplierCode + '</span>' + '--' +
'<span class="supplierName">' + detail.supplierName + '</span>' + '<span class="supplierName">' + detail.supplierName + '</span>' +
'-最新不含税采购价: ' + '<span id="materialNormb-' + processTableId + '" class="materialNormb">' + detail.materialNoRmb + '</span>' + // '--最新不含税采购价: ' + '<span id="materialNormb-' + processTableId + '" class="materialNormb">' + detail.materialNoRmb + '</span>' +
' RMB 最新含税采购价: ' + '<span id="materialRmb-' + processTableId + '" class="materialRmb">' + detail.materialRmb + '</span> RMB ' + // ' RMB --最新含税采购价: ' + '<span id="materialRmb-' + processTableId + '" class="materialRmb">' + detail.materialRmb + '</span> RMB ' +
// '<span class="supplierPurchasePlanCode" hidden="hidden" >' + material.planCodes + '</span>' + '</div>' +
// '<span class="supplierCorrelationCode" hidden="hidden" >' + material.correlationCodes + '</span>' + '<div class="col-sm-8 deliveryTime-'+processTableId+'" style="padding-top: 10px;padding-left: 0px;">' +
// '<span class="supplierPurchaseQuoteCode" hidden="hidden" >' + supplier.purchaseQuoteCode + '</span>' + '<label class="col-sm-2" style="padding-left: 0px;margin-top: 5px;">计划交付时间: </label>' +
'<div class="form-row deliveryTime-'+processTableId+'" >' +
'<label class="col-sm-2">计划交付时间: </label>' +
'<div class ="col-sm-4">' + '<div class ="col-sm-4">' +
'<div class="input-group date"> ' + '<div class="input-group date"> ' +
'<input type="text" name="deliveryTime" value="' + detail.deliveryTime + '" class="form-control supplierDeliveryTime" id="deliveryTime_' + processTableId + '">' + '<input type="text" disabled name="deliveryTime" value="' + detail.deliveryTime + '" class="form-control supplierDeliveryTime" id="deliveryTime_' + processTableId + '">' +
'<span class="input-group-addon"><i class="fa fa-calendar"></i></span>' + '<span class="input-group-addon"><i class="fa fa-calendar"></i></span>' +
'<hr style="border: none; height: 1px; background-color: #ccc;">' +
'</div>' + '</div>' +
'</div>' + '</div>' +
'</div>'+
'</div>' + '</div>' +
'</div>'+ '</div>'+
'<div class="row">' +
'<div class="hr-line-dashed" style="margin-bottom: 0px;margin-top: 80px;">' +
'</div>' + '</div>' +
'</div>'); '</div>');
$("#"+processTableId).append($supplierheaderContent); $("#"+processTableId).append($supplierheaderContent);
$("input[name='deliveryTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
todayBtn: true,
autoClose: true
});
}); });
} }
// tableSetup($processInfo, tableId);
}); });
}); });
@ -202,7 +235,6 @@
showToggle: false, showToggle: false,
data: data, data: data,
columns: [ columns: [
{checkbox: false},
{title: '料号', field: 'materialNo'}, {title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) { {title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
return $.table.imageView(value); return $.table.imageView(value);
@ -212,8 +244,13 @@
{title: '物料描述', field: 'description'}, {title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'}, {title: '品牌', field: 'brand'},
{title: '单位', field: 'unit', align: 'center', }, {title: '单位', field: 'unit', align: 'center', },
{title: '加工方式', field: 'processMethod', align: 'center',}, {title: '加工方式', field: 'processMethod', align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{title: '计划委外数', field: 'plannedOutsourceAmount'}, {title: '计划委外数', field: 'plannedOutsourceAmount'},
{title: '实际委外数', field: 'actualOutsourceAmount'},
{title: '已入库数', field: 'alreadyStorageAmount'}, {title: '已入库数', field: 'alreadyStorageAmount'},
{title: '本次入库数', field: 'nowStorageAmount', {title: '本次入库数', field: 'nowStorageAmount',
formatter: function(value, row, index) { formatter: function(value, row, index) {
@ -223,7 +260,20 @@
}, },
], ],
}); });
$('input[name="nowStorageAmount"]').on('input', function() {
calculateTotal();
});
} }
function calculateTotal() {
var inputs = $('input[name="nowStorageAmount"]');
var total = 0;
inputs.each(function() {
var value = parseFloat($(this).val()) || 0; // 将输入框的值转换为数字,默认为0
total += value;
});
$("#nowStorageTotalAmount").val(total);
};
// 函数用于合并重复的material的记录 // 函数用于合并重复的material的记录
function mergeRecords(items) { function mergeRecords(items) {
return items.reduce((merged, current) => { return items.reduce((merged, current) => {
@ -234,9 +284,9 @@
if (!existingRecord.orderDetails) { if (!existingRecord.orderDetails) {
existingRecord.orderDetails = []; existingRecord.orderDetails = [];
} }
existingRecord.orderDetails = current.orderDetails; existingRecord.orderDetails.push(current.orderDetails[0]);
} else { } else {
console.log(current); // console.log(current);
// 如果是第一次遇到这个materialNo,创建一个新的记录 // 如果是第一次遇到这个materialNo,创建一个新的记录
merged.push({ merged.push({
materialNo: current.materialNo, materialNo: current.materialNo,
@ -247,85 +297,97 @@
unit: current.unit, unit: current.unit,
brand: current.brand, brand: current.brand,
processMethod: current.processMethod, processMethod: current.processMethod,
// correlationCodes: current.correlationCodes, correlationCodes: current.correlationCodes,
plannedOutsourceAmount: current.plannedOutsourceAmount, plannedOutsourceAmount: current.plannedOutsourceAmount,
orderDetails: current.orderDetails orderDetails: [
current.orderDetails[0],
]
}); });
} }
return merged; return merged;
}, []); }, []);
}; };
// 保存信息 刷新表格
function saveJson(url, data, callback) {
var config = {
url: url,
type: "post",
dataType: "json",
contentType: "application/json;charset=utf-8",
data: data,
beforeSend: function () {
$.modal.loading("正在处理中,请稍后...");
$.modal.disable();
},
success: function(result) {
if (typeof callback == "function") {
callback(result);
}
$.operate.successCallback(result);
}
};
$.ajax(config)
};
function submitHandler() { function submitHandler() {
var outsourceStorage = { var outsourceStorage = {
relatedOrderCode: outsourceOrderList[0].outsourceOrderNo, relatedOrderCode: outsourceOrderList[0].outsourceOrderNo,
materialAmount: materials.length, outsourcePlanCode: outsourcePlanCode,
storageNum: 0, notifyArrivedNum: 0,
warehouseStorageOrderDetailList:[] storageDetailList:[]
}; };
if ($.validate.form()) {
let storageSum = 0; let storageSum = 0;
var storageDetail; var hasError = false;
var hasValue = false;
$('.table-materialNo').each(function(index, tableElement) { $('.table-materialNo').each(function(index, tableElement) {
var tableId = tableIdList[index]; var tableId = tableIdList[index];
let materialObj = materialList[index]; let materialObj = materialList[index];
if (typeof materialObj === 'undefined') return; if (typeof materialObj === 'undefined') return;
var rows = $("#" + tableId).bootstrapTable('getData').length; var rows = $("#" + "bootstrap-table_" + tableId).bootstrapTable('getData').length;
console.log(rows); if(rows != 0) {
for(var i = 0;i < rows;i++){ var data = $("#" + "bootstrap-table_" + tableId).bootstrapTable('getData')[0];
var data = $("#" + tableId).bootstrapTable('getData')[i]; if ($('[id^="nowStorageAmount_bootstrap-table_' + tableId + '"]').val() === "") {
// console.log(data.nowRequisitionAmount); return;
// console.log($('[id^="nowRequisitionAmount_' + tableId + '"]').val()); } else {
let value = Number($('[id^="nowStorageAmount_' + tableId + '"]').val()); hasValue = true;
// materialAmount++;
let value = Number($('[id^="nowStorageAmount_bootstrap-table_' + tableId + '"]').val());
if (!isNaN(value)) { if (!isNaN(value)) {
var hasReValue = Number(data.alreadyStorageAmount);
if (hasReValue + value > data.actualOutsourceAmount) {
hasError = true;
}
storageSum += value; storageSum += value;
} }
storageDetail = { var correlationCodes = $("#correlationCodes-" + tableId).text().trim();
relatedOrderCode: outsourceOrderList[0].outsourceOrderNo, $('#' + 'material-' + tableId).find('.process_card').each(function (processIndex, processCard) {
var processNo = $(processCard).find('.processNo').text().trim();
var processName = $(processCard).find('.processName').text().trim();
var chargeUnitInfo = $(processCard).find('.chargeUnitInfo').text().trim();
var singleMaterialInfo = $(processCard).find('.singleMaterialInfo').text().trim();
var supplierCode = $(processCard).find('.supplierCode').text().trim();
var supplierName = $(processCard).find('.supplierName').text().trim();
var processInfo = processNo + '-' + processName;
var supplierInfo = supplierCode + '--' + supplierName;
var deliveryTimeInfo = $(processCard).find("input[name='deliveryTime']").val();
var storageDetail = {
materialNo: data.materialNo, materialNo: data.materialNo,
materialPhotourl: data.materialPhotourl,
materialName: data.materialName, materialName: data.materialName,
materialPhotourl: data.materialPhotoUrl, description: data.description,
materialBrand: data.brand, brand: data.brand,
materialUnit: data.unit, unit: data.unit,
materialDescribe: data.description, processMethod: data.processMethod,
materialProcessMethod: data.processMethod, plannedOutsourceAmount: data.plannedOutsourceAmount,
// takenMaterial: (data.alreadyOutsourceAmount==='undefined'?0:data.alreadyOutsourceAmount), actualOutsourceAmount: data.actualOutsourceAmount,
takenMaterial:0, outsourceOrderNo: outsourceStorage.relatedOrderCode,
takingMaterial: $('[id^="nowStorageAmount_' + tableId + '"]').val(), takenMaterial: data.alreadyStorageAmount,
takingMaterial: value,
outsourceProcessInfo: processInfo,
chargeUnitInfo: chargeUnitInfo,
singleMaterialInfo: singleMaterialInfo,
supplierInfo: supplierInfo,
deliveryTimeInfo: deliveryTimeInfo,
correlationCodes: correlationCodes,
outsourcePlanCode: outsourceStorage.outsourcePlanCode,
}; };
console.log(storageDetail); outsourceStorage.storageDetailList.push(storageDetail);
});
}
outsourceStorage.notifyArrivedNum = storageSum;
} }
outsourceStorage.storageNum += storageSum;
outsourceStorage.warehouseStorageOrderDetailList.push(storageDetail);
}); });
if(!hasValue){
$.modal.msgError("入库数不能全为空!");
return;
}
if(!hasError){
console.log(outsourceStorage); console.log(outsourceStorage);
$.operate.saveJson(prefix + "/addStorage",JSON.stringify(outsourceStorage));
}; }else{
// 发送数据到后端API $.modal.msgError("累计入库数不能大于实际委外数!");
saveJson(prefix + "/addStorage",JSON.stringify(outsourceStorage)); return;
}
} }
</script> </script>

27
ruoyi-admin/src/main/resources/templates/system/outsource_storage/storage.html

@ -63,7 +63,11 @@
var removeFlag = [[${@permission.hasPermi('system:storage:remove')}]]; var removeFlag = [[${@permission.hasPermi('system:storage:remove')}]];
var detailFlag = [[${@permission.hasPermi('system:storage:detail')}]]; var detailFlag = [[${@permission.hasPermi('system:storage:detail')}]];
var prefix = ctx + "system/outsource_storage"; var prefix = ctx + "system/outsource_storage";
var warehouseStorageStatusDatas = [[${@dict.getType('warehouse_storage_status')}]];
var warehouseQualityStatusDatas = [[${@dict.getType('warehouse_quality_status')}]];
var warehouseStorageTypeDatas = [[${@dict.getType('warehouse_storage_type')}]];
var warehouseOrderTypeDatas = [[${@dict.getType('storage_order_type')}]];
var warehouseDeptTypeDatas = [[${@dict.getType('warehouse_dept_type')}]];
$(function() { $(function() {
var options = { var options = {
url: prefix + "/list", url: prefix + "/list",
@ -89,11 +93,17 @@
field: 'warehouseStorageStatus', field: 'warehouseStorageStatus',
title: '入库状态', title: '入库状态',
// 仓库入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库)' // 仓库入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库)'
formatter: function(value, row, index) {
return $.table.selectDictLabel(warehouseStorageStatusDatas, value);
}
}, },
{ {
field: 'warehouseQualityStatus', field: 'warehouseQualityStatus',
title: '品质状态', title: '品质状态',
// '仓库品质状态(0待品质、1部分品质、2全部品质)' // '仓库品质状态(0待品质、1部分品质、2全部品质)'
formatter: function(value, row, index) {
return $.table.selectDictLabel(warehouseQualityStatusDatas, value);
}
}, },
{ {
field: 'relatedOrderCode', field: 'relatedOrderCode',
@ -101,17 +111,26 @@
}, },
{ {
field: 'warehouseOrderType', field: 'warehouseOrderType',
title: '订单类型' title: '订单类型',
formatter: function(value, row, index) {
return $.table.selectDictLabel(warehouseOrderTypeDatas, value);
}
}, },
{ {
field: 'warehouseStorageType', field: 'warehouseStorageType',
title: '入库类型' title: '入库类型',
// (0采购入库、1供应商补货、2委内入库、3公司退货、4委外入库、5生产入库) // (0采购入库、1供应商补货、2委内入库、3公司退货、4委外入库、5生产入库)
formatter: function(value, row, index) {
return $.table.selectDictLabel(warehouseStorageTypeDatas, value);
}
}, },
{ {
field: 'warehouseDeptType', field: 'warehouseDeptType',
title: '入库部门', title: '入库部门',
// '仓库入库部门类型(0仓库,1采购 )' // '仓库入库部门类型(0仓库,1采购 )'
formatter: function(value, row, index) {
return $.table.selectDictLabel(warehouseDeptTypeDatas, value);
}
}, },
{ {
@ -195,7 +214,7 @@
align: 'center', align: 'center',
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; var actions = [];
actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:;" onclick="$.operate.detail(\'' + row.warehouseStorageId + '\')"><i class="fa fa-search"></i>详情</a> '); actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:;" onclick="$.operate.detail(\'' + row.warehouseStorageCode + '\')"><i class="fa fa-search"></i>详情</a> ');
return actions.join(''); return actions.join('');
} }
}] }]

Loading…
Cancel
Save