Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev
王晓迪 3 months ago
parent
commit
dc8b709f3d
  1. 6
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderPickMapper.java
  2. 19
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseOutOrderController.java
  3. 2
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseOutOrder.java
  4. 1
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java
  5. 121
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java
  6. 18
      ruoyi-admin/src/main/resources/mapper/system/SysMakeorderPickMapper.xml
  7. 42
      ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/makeOutWarehouse.html
  8. 7
      ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/makeOutWarehouseDetail.html
  9. 5
      ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html

6
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderPickMapper.java

@ -92,4 +92,10 @@ public interface SysMakeorderPickMapper
// 根据单号集合查询生产领料单 // 根据单号集合查询生产领料单
public List<SysMakeorderPickVo> selectSysMakeorderPickListByNos(String[] pickNos); public List<SysMakeorderPickVo> selectSysMakeorderPickListByNos(String[] pickNos);
/**
* 通过出库单号查询生产领料单
* */
SysMakeorderPick selectSysMakeorderPickByOutOrderCode(String outOrderCode);
} }

19
ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseOutOrderController.java

@ -308,8 +308,23 @@ public class WarehouseOutOrderController extends BaseController
return prefix + "/makeOutWarehouseDetail"; return prefix + "/makeOutWarehouseDetail";
} }
/** /**
* 生产单-出库 * 修改保存生产单-出库详情
*/
@Log(title = "仓库出库单", businessType = BusinessType.UPDATE)
@PostMapping("/makeOutWarehouseDetail")
@ResponseBody
public AjaxResult makeOutWarehouseDetailSave(@RequestBody WarehouseOutOrder warehouseOutOrder)
{
return toAjax(warehouseOutOrderService.generalUpdateWarehouseOutOrder(warehouseOutOrder));
}
/**
* 开发修改单-出库
*/ */
@GetMapping("/developModifyOutWarehouse/{outOrderId}") @GetMapping("/developModifyOutWarehouse/{outOrderId}")
public String developModifyOutWarehouse(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap) public String developModifyOutWarehouse(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap)
@ -320,7 +335,7 @@ public class WarehouseOutOrderController extends BaseController
} }
/** /**
* 修改保存生产-出库 * 修改保存开发修改-出库
*/ */
@RequiresPermissions("warehouse:warehouseOutOrder:developModifyOutWarehouse") @RequiresPermissions("warehouse:warehouseOutOrder:developModifyOutWarehouse")
@Log(title = "仓库出库单", businessType = BusinessType.UPDATE) @Log(title = "仓库出库单", businessType = BusinessType.UPDATE)

2
ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseOutOrder.java

@ -30,7 +30,7 @@ public class WarehouseOutOrder extends BaseEntity
/** 关联生产订单号 */ /** 关联生产订单号 */
private String makeNo; private String makeNo;
/** 出库状态 */ /** 出库状态(0待仓库准备物料、1待售后维护设备1、2待业务确认发货、3待售后维护设备2、4待出库、5部分出库、6全部出库、7已出库、8已取消、9待收货、10待验收、11部分验收、12全部验收) */
@Excel(name = "出库状态",dictType = "warehouse_out_status") @Excel(name = "出库状态",dictType = "warehouse_out_status")
private String warehouseOutStatus; private String warehouseOutStatus;

1
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java

@ -142,4 +142,5 @@ public interface IWarehouseOutOrderService
* 销售单-出库 物料信息关联设备子表信息 * 销售单-出库 物料信息关联设备子表信息
*/ */
List<SelectShippingDeviceVO> showAftersalesShippingDeviceListTwo(WarehouseOutOrder warehouseOutOrder); List<SelectShippingDeviceVO> showAftersalesShippingDeviceListTwo(WarehouseOutOrder warehouseOutOrder);
} }

121
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java

@ -866,74 +866,115 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService
throw new BusinessException("更新出库单信息失败:缺少必要参数"); throw new BusinessException("更新出库单信息失败:缺少必要参数");
} }
WarehouseOutOrder oldWarehouseOutOrder = warehouseOutOrderMapper.selectWarehouseOutOrderByCode(warehouseOutOrder.getOutOrderCode());
if (oldWarehouseOutOrder == null){
log.warn("更新出库单信息失败:出库单号为空:{}",warehouseOutOrder.getOutOrderCode());
throw new BusinessException("出库单号为空");
}
//查询数据库中的生产领料单
SysMakeorderPick oldMakeorderPick = sysMakeorderPickMapper.selectSysMakeorderPickByOutOrderCode(warehouseOutOrder.getOutOrderCode());
List<WarehouseOutOrderDetail> warehouseOutOrderDetailList = warehouseOutOrder.getWarehouseOutOrderDetailList(); List<WarehouseOutOrderDetail> warehouseOutOrderDetailList = warehouseOutOrder.getWarehouseOutOrderDetailList();
// 检查outOrderSum是否含有null值
boolean hasOutOrderSumNull = warehouseOutOrderDetailList.stream()
.anyMatch(item -> item.getActualOutOrderSum() == null);
if (hasOutOrderSumNull) {
throw new BusinessException("存在实际出库数为空,请检查!");
}
//出库数
Integer outOrderSum = 0;
if (CollectionUtils.isEmpty(warehouseOutOrderDetailList)){ if (CollectionUtils.isEmpty(warehouseOutOrderDetailList)){
log.warn("保存生产单出库,物料列表信息为空:{}",warehouseOutOrder); log.warn("保存生产单出库,物料列表信息为空:{}",warehouseOutOrder);
throw new BusinessException("出库单详情数据为空"); throw new BusinessException("出库单详情数据为空");
}else { }else {
outOrderSum = warehouseOutOrderDetailList.stream().mapToInt(WarehouseOutOrderDetail::getActualOutOrderSum).sum();
Integer oldOutOrderSum = oldWarehouseOutOrder.getOutOrderSum();
if (oldOutOrderSum == null || oldOutOrderSum == 0){
oldOutOrderSum = outOrderSum;
}else {
oldOutOrderSum += outOrderSum;
}
warehouseOutOrder.setOutOrderSum(oldOutOrderSum);
int updateRows = 0; int updateRows = 0;
for (WarehouseOutOrderDetail warehouseOutOrderDetail : warehouseOutOrderDetailList) { for (WarehouseOutOrderDetail warehouseOutOrderDetail : warehouseOutOrderDetailList) {
warehouseOutOrderDetail.setUpdateBy(loginName); warehouseOutOrderDetail.setUpdateBy(loginName);
warehouseOutOrderDetail.setUpdateTime(new Date()); warehouseOutOrderDetail.setUpdateTime(new Date());
warehouseOutOrderDetail.setRemark(warehouseOutOrder.getRemark()); warehouseOutOrderDetail.setRemark(warehouseOutOrder.getRemark());
Integer applyOutOrderSum = warehouseOutOrderDetail.getApplyOutOrderSum();
Integer hasOutOrderSum = warehouseOutOrderDetail.getHasOutOrderSum();
Integer actualOutOrderSum = warehouseOutOrderDetail.getActualOutOrderSum();
if (actualOutOrderSum > applyOutOrderSum ){
throw new BusinessException("实际出库数不能大于申请出库数");
}
if (hasOutOrderSum == null || hasOutOrderSum == 0){
hasOutOrderSum= actualOutOrderSum;
}else {
hasOutOrderSum += actualOutOrderSum;
}
if (hasOutOrderSum > applyOutOrderSum ){
throw new BusinessException("已出库数不能大于申请出库数");
}
//设置已出库数 //设置已出库数
warehouseOutOrderDetail.setHasOutOrderSum(warehouseOutOrderDetail.getActualOutOrderSum()); warehouseOutOrderDetail.setHasOutOrderSum(hasOutOrderSum);
//设置仓库员 //设置仓库员
warehouseOutOrderDetail.setWarehouseName(loginName); warehouseOutOrderDetail.setWarehouseName(loginName);
//更新数据库记录 //更新数据库记录
updateRows += outOrderDetailMapper.updateWarehouseOutOrderDetail(warehouseOutOrderDetail); updateRows += outOrderDetailMapper.updateWarehouseOutOrderDetail(warehouseOutOrderDetail);
if (updateRows <= 0){ if (updateRows <= 0){
throw new BusinessException("更新出库单详情数据失败"); throw new BusinessException("更新出库单详情数据失败");
}else {
// 更新库存查询记录,新增库存历史
String materialNo = warehouseOutOrderDetail.getMaterialNo();
WarehouseInventoryInquiry inventoryInquiry = inventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
if(inventoryInquiry == null){
throw new BusinessException("更新库存查询数据失败!该物料不存在库存数据");
}else{
int inquiryUpdateResult = updateWarehouseInventoryInquiry(warehouseOutOrderDetail,inventoryInquiry);
if (inquiryUpdateResult <= 0){
throw new BusinessException("更新库存查询数据失败");
}
WarehouseInventoryInquiryDetail inquiryDetail = createWarehouseInventoryInquiryDetail(warehouseOutOrderDetail);
inquiryDetail.setInventoryHistoricalType("4");//生产出库
int insertInquiryResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertInquiryResult <= 0){
throw new BusinessException("新增库存历史数据失败");
}
}
} }
// else {
//// 更新库存查询记录,新增库存历史
// String materialNo = warehouseOutOrderDetail.getMaterialNo();
// WarehouseInventoryInquiry inventoryInquiry = inventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
// if(inventoryInquiry == null){
// throw new BusinessException("更新库存查询数据失败!该物料不存在库存数据");
// }else{
// int inquiryUpdateResult = updateWarehouseInventoryInquiry(warehouseOutOrderDetail,inventoryInquiry);
// if (inquiryUpdateResult <= 0){
// throw new BusinessException("更新库存查询数据失败");
// }
// WarehouseInventoryInquiryDetail inquiryDetail = createWarehouseInventoryInquiryDetail(warehouseOutOrderDetail);
// inquiryDetail.setInventoryHistoricalType("4");//生产出库
// int insertInquiryResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
// if (insertInquiryResult <= 0){
// throw new BusinessException("新增库存历史数据失败");
// }
// }
// }
} }
} }
warehouseOutOrder.setUpdateBy(loginName); warehouseOutOrder.setUpdateBy(loginName);
warehouseOutOrder.setUpdateTime(DateUtils.getNowDate()); warehouseOutOrder.setUpdateTime(DateUtils.getNowDate());
//表明已出库
warehouseOutOrder.setWarehouseOutStatus("7"); if (warehouseOutOrder.getOutOrderSum().equals(oldWarehouseOutOrder.getEnterpriseSum())){
warehouseOutOrder.setWarehouseOutStatus("6");//全部出库
oldMakeorderPick.setPickStatus("2");
}else {
warehouseOutOrder.setWarehouseOutStatus("5");//部分出库
oldMakeorderPick.setPickStatus("1");
}
//设置出库时间 //设置出库时间
warehouseOutOrder.setOutOrderTime(DateUtils.getNowDate()); warehouseOutOrder.setOutOrderTime(DateUtils.getNowDate());
//设置仓库员 //设置仓库员
warehouseOutOrder.setWarehouseName(loginName); warehouseOutOrder.setWarehouseName(loginName);
//计算出库单主表的出库数
Integer outOrderSum = 0;
// 检查outOrderSum是否含有null值
boolean hasOutOrderSumNull = warehouseOutOrderDetailList.stream()
.anyMatch(item -> item.getActualOutOrderSum() == null);
if (hasOutOrderSumNull) {
throw new BusinessException("存在实际出库数为空,请检查!");
}
// 计算各个字段的总和
outOrderSum = warehouseOutOrderDetailList.stream()
.mapToInt(WarehouseOutOrderDetail::getActualOutOrderSum)
.sum();
//设置出库单主表的出库数
warehouseOutOrder.setOutOrderSum(outOrderSum);
//更新生产订单信息 //更新生产订单信息
SysMakeOrder sysMakeOrder = new SysMakeOrder(); SysMakeOrder sysMakeOrder = new SysMakeOrder();
@ -965,8 +1006,12 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService
log.warn("更新销售订单信息失败"); log.warn("更新销售订单信息失败");
throw new BusinessException("更新销售订单信息失败"); throw new BusinessException("更新销售订单信息失败");
} }
oldMakeorderPick.setUpdateBy(loginName);
oldMakeorderPick.setUpdateTime(new Date());
// 更新生产领料单数据表示已领料 // 更新生产领料单数据表示已领料
int updateMakeorderPickResult = sysMakeorderPickMapper.updateMakeorderPickByCode(warehouseOutOrder.getOutOrderCode()); int updateMakeorderPickResult = sysMakeorderPickMapper.updateSysMakeorderPick(oldMakeorderPick);
if (updateMakeorderPickResult <= 0){ if (updateMakeorderPickResult <= 0){
log.warn("更新生产领料单信息失败"); log.warn("更新生产领料单信息失败");
throw new BusinessException("更新生产领料单信息失败"); throw new BusinessException("更新生产领料单信息失败");

18
ruoyi-admin/src/main/resources/mapper/system/SysMakeorderPickMapper.xml

@ -43,6 +43,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
on a.sale_no = b.sales_order_code on a.sale_no = b.sales_order_code
</sql> </sql>
<sql id="selectSysMakeorderPickVo2">
select id, del_flag, create_by, create_time, update_by, update_time, remark
,make_no, sale_no, pick_no, out_order_code, pick_status, pick_user, audit_status
, instance_id, instance_type, submit_instance_id, cancel_instance_id, restore_instance_id, apply_title, apply_user, apply_time
,material_sum,enterprise_sum,out_order_code
from sys_makeorder_pick
</sql>
<select id="selectSysMakeorderPickList" parameterType="SysMakeorderPick" resultMap="SysMakeorderPickResult"> <select id="selectSysMakeorderPickList" parameterType="SysMakeorderPick" resultMap="SysMakeorderPickResult">
<include refid="selectSysMakeorderPickVo"/> <include refid="selectSysMakeorderPickVo"/>
<where> <where>
@ -78,7 +87,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectSysMakeorderPickVo"/> <include refid="selectSysMakeorderPickVo"/>
where a.id = #{id} where a.id = #{id}
</select> </select>
<select id="selectSysMakeorderPickByOutOrderCode" parameterType="String" resultMap="SysMakeorderPickResult">
<include refid="selectSysMakeorderPickVo2"/>
where out_order_code = #{outOrderCode}
</select>
<insert id="insertSysMakeorderPick" parameterType="SysMakeorderPick" useGeneratedKeys="true" keyProperty="id"> <insert id="insertSysMakeorderPick" parameterType="SysMakeorderPick" useGeneratedKeys="true" keyProperty="id">
insert into sys_makeorder_pick insert into sys_makeorder_pick
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
@ -220,4 +235,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{pickNo} #{pickNo}
</foreach> </foreach>
</select> </select>
</mapper> </mapper>

42
ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/makeOutWarehouse.html

@ -3,6 +3,7 @@
<head> <head>
<th:block th:include="include :: header('生产单-出库')" /> <th:block th:include="include :: header('生产单-出库')" />
<th:block th:include="include :: datetimepicker-css" /> <th:block th:include="include :: datetimepicker-css" />
<th:block th:include="include :: bootstrap-editable-css" />
</head> </head>
<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">
@ -80,8 +81,9 @@
return { return {
"outOrderDetailId":item.outOrderDetailId, "outOrderDetailId":item.outOrderDetailId,
"outOrderCode":item.outOrderCode, "outOrderCode":item.outOrderCode,
"materialNo": item.materialNo, // 假设id对应materialId "materialNo": item.materialNo,
"prepareOutOrderSum":item.prepareOutOrderSum, "hasOutOrderSum":item.hasOutOrderSum,
"applyOutOrderSum":item.applyOutOrderSum,
"actualOutOrderSum":item.actualOutOrderSum "actualOutOrderSum":item.actualOutOrderSum
// ...其他字段 // ...其他字段
}; };
@ -170,7 +172,41 @@
{ {
title: '实际出库数', title: '实际出库数',
field: 'actualOutOrderSum', field: 'actualOutOrderSum',
editable:true editable: {
validate: function(value) {
if ($.trim(value) === '') {
return '实际出库数不能为空';
}
if (isNaN(value)) {
return '请输入有效的数字';
}
if (value < 0) {
return '实际出库数不能小于0';
}
//不能为小数
if (value % 1 !== 0) {
return '实际出库数不能为小数';
}
},
},
formatter: function (value, row) {
// 检查 row 是否存在
if (!row) {
return "";
}
// 检查 actualOutOrderSum 是否存在
if (row.actualOutOrderSum === undefined || row.actualOutOrderSum === null) {
return "";
}
// 根据 actualOutOrderSum 的值决定返回值
if (row.actualOutOrderSum) {
return row.actualOutOrderSum;
} else {
return value;
}
}
} }
] ]
}; };

7
ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/makeOutWarehouseDetail.html

@ -80,8 +80,9 @@
return { return {
"outOrderDetailId":item.outOrderDetailId, "outOrderDetailId":item.outOrderDetailId,
"outOrderCode":item.outOrderCode, "outOrderCode":item.outOrderCode,
"materialNo": item.materialNo, // 假设id对应materialId "materialNo": item.materialNo,
"prepareOutOrderSum":item.prepareOutOrderSum, "hasOutOrderSum": item.hasOutOrderSum,
"applyOutOrderSum":item.applyOutOrderSum,
"actualOutOrderSum":item.actualOutOrderSum "actualOutOrderSum":item.actualOutOrderSum
// ...其他字段 // ...其他字段
}; };
@ -95,7 +96,7 @@
// 使用 JSON.stringify() 序列化数据 // 使用 JSON.stringify() 序列化数据
const jsonData = JSON.stringify(combinedData); const jsonData = JSON.stringify(combinedData);
// 发送 AJAX 请求到后端接口 // 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/makeOutWarehouse", jsonData); $.operate.saveJson(prefix + "/makeOutWarehouseDetail", jsonData);
} }
//物料信息展示列表 //物料信息展示列表

5
ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html

@ -129,6 +129,9 @@
{ {
title: '关联订单号', title: '关联订单号',
field: 'relatedOrderCode', field: 'relatedOrderCode',
formatter: function(value, row, index) {
return $.table.tooltip(value, 5, "open");
}
}, },
{ {
title: '订单类型', title: '订单类型',
@ -223,7 +226,7 @@
} }
/*生产单-出库*/ /*生产单-出库*/
if (row.warehouseOutStatus == 4 && row.warehouseOrderType == 1 && row.warehouseOutType == 1){ if ( (row.warehouseOutStatus == 5 || row.warehouseOutStatus == 4)&& row.warehouseOrderType == 1 && row.warehouseOutType == 1){
actions.push('<a class="' + makeOutWarehouseFlag + '" href="javascript:void(0)" onclick="makeOutWarehouse(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>出库</a> '); actions.push('<a class="' + makeOutWarehouseFlag + '" href="javascript:void(0)" onclick="makeOutWarehouse(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>出库</a> ');
} }
/*生产单-出库 详情*/ /*生产单-出库 详情*/

Loading…
Cancel
Save