diff --git a/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html b/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html
index 139617c3..2b24e196 100644
--- a/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html
+++ b/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html
@@ -593,7 +593,6 @@ function initWarehouseTable(data) {
function onEditableSave(field, row, rowIndex, oldValue, $el) {
-
if (!row['defaultWarehouse'] && row[field] > row['availableCount']) {
$.modal.msgError("库存不足")
row[field] = oldValue
@@ -605,8 +604,8 @@ function initWarehouseTable(data) {
totalConfirmQuantity += Number(item.confirmQuantity || 0)
});
let generateNumber = $('#out-generatedQuantity').text();
- totalConfirmQuantity += Number(generateNumber)
- if (totalConfirmQuantity > Number($('#out-quantity').text())) {
+ let allTotal=totalConfirmQuantity + Number(generateNumber)
+ if (allTotal > Number($('#out-quantity').text())) {
$.modal.msgError("本次提交出库数量不能大于应出库数量")
row[field] = oldValue
return;
@@ -626,7 +625,7 @@ function initWarehouseTable(data) {
$('#outer-model').val(model)
$('#outer-vendorName').val(vendorName)
$('#out-quantity').text(quantity)
- $('#out-generatedQuantity').text(generatedQuantity)
+ $('#out-generatedQuantity').text(Number(generatedQuantity)+Number(confirmQuantity))
$('#deliveryTime').val(getNowDate());
$('#deliveryTime').attr('disabled', true);
parent.$('.layui-layer-btn').css('display', 'none')
@@ -702,6 +701,7 @@ function initWarehouseTable(data) {
var options = {
id: "outer-table",
data: data ?? [[${inventoryOuterList}]],
+ sidePagination: "client",
showSearch: false,
showRefresh: false,
showToggle: false,
diff --git a/ruoyi-admin/src/main/resources/templates/inventory/execution/track.html b/ruoyi-admin/src/main/resources/templates/inventory/execution/track.html
index 12a04d6f..2d116823 100644
--- a/ruoyi-admin/src/main/resources/templates/inventory/execution/track.html
+++ b/ruoyi-admin/src/main/resources/templates/inventory/execution/track.html
@@ -118,7 +118,7 @@
-
+
@@ -229,8 +229,8 @@
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
modalName: "订单执行跟踪",
- sortName:'outerStatus',
- sortOrder: 'asc',
+ sortName:'approveTime',
+ sortOrder: 'desc',
fixedColumns: true,
fixedRightNumber: 1,
columns: [{
diff --git a/ruoyi-admin/src/main/resources/templates/inventory/info/info.html b/ruoyi-admin/src/main/resources/templates/inventory/info/info.html
index 10e061ce..7e8e1365 100644
--- a/ruoyi-admin/src/main/resources/templates/inventory/info/info.html
+++ b/ruoyi-admin/src/main/resources/templates/inventory/info/info.html
@@ -97,7 +97,16 @@
field: 'availableCount',
title: '实时库存',
formatter: function (value, row, index) {
- return value ??0;
+ let showValue= value ??0;
+ let showHtml=''
+ if (value>200){
+ showHtml= `
${showValue}`
+ }else if (value<=0){
+ showHtml= `
${showValue}`
+ }else{
+ showHtml= `
${showValue}`
+ }
+ return showHtml;
}
},
{
diff --git a/ruoyi-admin/src/main/resources/templates/inventory/info/outerLog.html b/ruoyi-admin/src/main/resources/templates/inventory/info/outerLog.html
index 5849076d..0b30ce8f 100644
--- a/ruoyi-admin/src/main/resources/templates/inventory/info/outerLog.html
+++ b/ruoyi-admin/src/main/resources/templates/inventory/info/outerLog.html
@@ -71,10 +71,6 @@
}
},
- {
- field: 'warehouseName',
- title: '出库仓'
- },
{
field: 'createByName',
title: '经办人'
diff --git a/ruoyi-admin/src/main/resources/templates/inventory/inner/add.html b/ruoyi-admin/src/main/resources/templates/inventory/inner/add.html
index 06cd1d39..05b8cc3d 100644
--- a/ruoyi-admin/src/main/resources/templates/inventory/inner/add.html
+++ b/ruoyi-admin/src/main/resources/templates/inventory/inner/add.html
@@ -203,7 +203,6 @@
// 解析SN码,分离前缀和数字部分
let snPrefix = "";
let snNumber = "";
-debugger
// 从字符串末尾开始查找数字部分
for (let i = productSn.length - 1; i >= 0; i--) {
if (!isNaN(productSn[i]) && productSn[i] !== ' ') {
@@ -214,6 +213,10 @@ debugger
}
}
let snNumberLength = snNumber.length;
+ if (snNumberLength === 0) {
+ $.modal.msgError("SN码最后一位必须为数字,否则无法按顺序计算对应SN码");
+ return;
+ }
let startNumber = parseInt(snNumber);
// 计算当前SN码的数字部分
@@ -275,6 +278,10 @@ debugger
}
}
let snNumberLength = snNumber.length;
+ if (snNumberLength === 0) {
+ $.modal.msgError("SN码最后一位必须为数字,否则无法按顺序计算对应SN码");
+ return;
+ }
let startNumber = parseInt(snNumber);
for (let i = 0; i
{
- // $.table.search()
+ // $.table.refresh()
});
})
}
@@ -148,7 +150,7 @@
function refundable(id) {
$.modal.confirm("确认要确认退回吗?", function () {
$.operate.post(prefix + "/status", {"id": id, "outerStatus": '4'},()=>{
- // $.table.search()
+ // $.table.refresh()
});
})
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java
index 139d9544..6a101d3b 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ExecutionTrackServiceImpl.java
@@ -116,7 +116,7 @@ public class ExecutionTrackServiceImpl implements IExecutionTrackService {
inventoryOuter.setProductCodeList(productCodeList);
List inventoryOuters = outerService.selectInventoryOuterList(inventoryOuter);
- vo.setInventoryOuterList(inventoryOuters);
+ vo.setInventoryOuterList(inventoryOuters.stream().sorted(Comparator.comparing(InventoryOuter::getCreateTime).reversed()).collect(Collectors.toList()));
// 根据出库单状态设置generatedQuantity和confirmQuantity
if (inventoryOuters != null && !inventoryOuters.isEmpty()) {
Map> outersByProductCode = inventoryOuters.stream()
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java
index c1e04f26..356aa2a7 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java
@@ -112,6 +112,7 @@ public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService {
item.setInnerCode(omsInventoryInner.getInnerCode());
item.setCreateBy(currentUserId);
item.setCreateTime(nowDate);
+ item.setInventoryStatus(InventoryInfo.InventoryStatusEnum.INNER.getCode());
});
//校验sn是否重复
List repeatSnList = inventoryInfoService.checkUnq(inventoryInfoList.stream().map(InventoryInfo::getProductSn).collect(Collectors.toList()));
@@ -199,9 +200,9 @@ public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService {
return info;
}).collect(Collectors.toList());
-
+ List productInfos = productInfoService.selectProductInfoByCodeList(Collections.singletonList(productCode));
OmsInventoryInner omsInventoryInner = new OmsInventoryInner();
- omsInventoryInner.setVendorCode(inventoryAuthService.currentVendor().get(0).getVendorCode());
+ omsInventoryInner.setVendorCode(productInfos.get(0).getVendorCode());
omsInventoryInner.setProductCode(productCode);
omsInventoryInner.setWarehouseId(warehouseInfoList.get(0).getId());
omsInventoryInner.setInventoryInfoList(inventoryInfoList);
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java
index 9afef394..0eccb130 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java
@@ -1008,48 +1008,103 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To
@Override
public boolean todoApproveCallback(Todo todo) {
- if (CollUtil.isNotEmpty(todo.getVariables())) {
- Integer approveBtn = (Integer) todo.getVariables().get("approveBtn");
- if (approveBtn != null && approveBtn.equals(0)) {
- //审批驳回 修改状态
- ProjectOrderInfo projectOrderInfo = new ProjectOrderInfo();
- projectOrderInfo.setOrderStatus(ProjectOrderInfo.OrderStatus.APPROVE_REJECT.getCode());
- projectOrderInfo.setOrderCode(todo.getBusinessKey());
- if ("公司领导".equals(todo.getTaskName())) {
- projectOrderInfo.setVersionCode("add");
- }
- projectOrderInfoMapper.updateProjectOrderInfoByCode(projectOrderInfo);
- }
- if ("公司领导".equals(todo.getTaskName()) && approveBtn.equals(1)) {
- ProjectOrderInfo dbProjectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoByCode(todo.getBusinessKey());
- ProjectOrderInfo projectOrderInfo = new ProjectOrderInfo();
- projectOrderInfo.setOrderStatus(ProjectOrderInfo.OrderStatus.APPROVE_COMPLETE.getCode());
- projectOrderInfo.setApproveTime(DateUtils.getNowDate());
- //修改执行单时间 只有直签且有现金折扣的时间才是配置时间 否则默认30天
- int addHour = ProjectOrderInfo.ProcessTemplateEnum.DIRECT_SIGNING.getCode().equals(dbProjectOrderInfo.getProcessTemplate())
- && dbProjectOrderInfo.getDiscountFold() != null && dbProjectOrderInfo.getDiscountFold().compareTo(BigDecimal.ONE) < 0 ? endHour : 30;
- projectOrderInfo.setOrderEndTime(DateUtils.addHours(DateUtils.getNowDate(), addHour));
- projectOrderInfo.setOrderCode(todo.getBusinessKey());
- projectOrderInfoMapper.updateProjectOrderInfoByCode(projectOrderInfo);
- projectOrderInfoMapper.bakData(projectOrderInfo);
- //修改产品数据
-// projectInfo
- if (dbProjectOrderInfo.getDiscountFold().compareTo(BigDecimal.ONE) != 0) {
+ if (CollUtil.isEmpty(todo.getVariables())) {
+ return TodoCommonTemplate.super.todoApproveCallback(todo);
+ }
- productInfoService.calcByDiscountFold(dbProjectOrderInfo.getDiscountFold(), dbProjectOrderInfo.getProjectId());
- }
- //查询商务
- List sysUsers = userService.listByRoleId(businessRoleId);
- List emailList = sysUsers.stream().map(SysUser::getEmail).filter(StringUtils::isNotEmpty).collect(Collectors.toList());
- //查询代理商
- List partnerInfos = partnerInfoService.listByOrderCode(Collections.singletonList(dbProjectOrderInfo.getOrderCode()));
- emailList.addAll(partnerInfos.stream().map(PartnerInfo::getContactEmail).filter(StringUtils::isNotEmpty).collect(Collectors.toList()));
- this.sendPartnerMail(emailList.stream().distinct().collect(Collectors.toList()), dbProjectOrderInfo);
+ Integer approveBtn = (Integer) todo.getVariables().get("approveBtn");
+ if (approveBtn == null) {
+ return TodoCommonTemplate.super.todoApproveCallback(todo);
+ }
+
+ String taskName = todo.getTaskName();
+ String businessKey = todo.getBusinessKey();
+
+ // 审批驳回处理
+ if (approveBtn.equals(0)) {
+ handleRejectOrder(taskName, businessKey);
+ } else if (approveBtn.equals(1)) {
+ // 审批通过处理
+ if ("产品经理".equals(taskName)) {
+ handleProductManagerApproval(businessKey);
+ } else if ("公司领导".equals(taskName)) {
+ handleCompanyLeaderApproval(businessKey);
}
}
+
return TodoCommonTemplate.super.todoApproveCallback(todo);
}
+
+ /**
+ * 处理订单驳回
+ */
+ private void handleRejectOrder(String taskName, String businessKey) {
+ ProjectOrderInfo projectOrderInfo = new ProjectOrderInfo();
+ projectOrderInfo.setOrderStatus(ProjectOrderInfo.OrderStatus.APPROVE_REJECT.getCode());
+ projectOrderInfo.setOrderCode(businessKey);
+
+ if ("公司领导".equals(taskName)) {
+ projectOrderInfo.setVersionCode("add");
+ }
+
+ projectOrderInfoMapper.updateProjectOrderInfoByCode(projectOrderInfo);
+ }
+
+ /**
+ * 处理产品经理审批通过
+ */
+ private void handleProductManagerApproval(String businessKey) {
+ ProjectOrderInfo dbProjectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoByCode(businessKey);
+
+ // 查询商务和代理商邮箱
+ List emailList = new ArrayList<>();
+
+ // 查询商务邮箱
+ List sysUsers = userService.listByRoleId(businessRoleId);
+ emailList.addAll(sysUsers.stream()
+ .map(SysUser::getEmail)
+ .filter(StringUtils::isNotEmpty)
+ .collect(Collectors.toList()));
+
+ // 查询代理商邮箱
+ List partnerInfos = partnerInfoService.listByOrderCode(Collections.singletonList(dbProjectOrderInfo.getOrderCode()));
+ emailList.addAll(partnerInfos.stream()
+ .map(PartnerInfo::getContactEmail)
+ .filter(StringUtils::isNotEmpty)
+ .collect(Collectors.toList()));
+
+ // 发送邮件
+ this.sendPartnerMail(emailList.stream().distinct().collect(Collectors.toList()), dbProjectOrderInfo);
+ }
+
+ /**
+ * 处理公司领导审批通过
+ */
+ private void handleCompanyLeaderApproval(String businessKey) {
+ ProjectOrderInfo dbProjectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoByCode(businessKey);
+
+ ProjectOrderInfo projectOrderInfo = new ProjectOrderInfo();
+ projectOrderInfo.setOrderStatus(ProjectOrderInfo.OrderStatus.APPROVE_COMPLETE.getCode());
+ projectOrderInfo.setApproveTime(DateUtils.getNowDate());
+
+ // 修改执行单时间 只有直签且有现金折扣的时间才是配置时间 否则默认30天
+ int addHour = ProjectOrderInfo.ProcessTemplateEnum.DIRECT_SIGNING.getCode().equals(dbProjectOrderInfo.getProcessTemplate())
+ && dbProjectOrderInfo.getDiscountFold() != null
+ && dbProjectOrderInfo.getDiscountFold().compareTo(BigDecimal.ONE) < 0 ? endHour : 30;
+
+ projectOrderInfo.setOrderEndTime(DateUtils.addHours(DateUtils.getNowDate(), addHour));
+ projectOrderInfo.setOrderCode(businessKey);
+
+ projectOrderInfoMapper.updateProjectOrderInfoByCode(projectOrderInfo);
+ projectOrderInfoMapper.bakData(projectOrderInfo);
+
+ // 修改产品数据
+ if (dbProjectOrderInfo.getDiscountFold().compareTo(BigDecimal.ONE) != 0) {
+ productInfoService.calcByDiscountFold(dbProjectOrderInfo.getDiscountFold(), dbProjectOrderInfo.getProjectId());
+ }
+ }
+
@Override
public Object completedTodoDetail(String businessKey, String processKey, String todoId) {
return null;