仓库管理修改更新

liweidong
wusiyu 2 days ago
parent 9be3aa6613
commit 049c3c4a94
  1. 5
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StOtherOutRecord.java
  2. 2
      blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StClassRequestController.java
  3. 2
      blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StOtherOutRecordController.java
  4. 33
      blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StOtherReceiptRecordController.java
  5. 2
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StClassRequestMapper.xml
  6. 8
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StOtherOutRecordMapper.xml
  7. 1
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StOtherReceiptRecordMapper.xml
  8. 2
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StStorageLocationMapper.java
  9. 13
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StStorageLocationMapper.xml
  10. 1
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStStorageLocationService.java
  11. 7
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java
  12. 16
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StClassRequestServiceImpl.java
  13. 107
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java
  14. 22
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java
  15. 5
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StStorageLocationServiceImpl.java
  16. 7
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java

@ -110,6 +110,11 @@ public class StOtherOutRecord extends TenantEntity {
*/
@Schema(description = "出库数量")
private Double outQty;
/**
* 领料人ID
*/
@Schema(description = "领料人ID")
private Long picker;
/*0:报废出库,1:料头出库,2.超额出库,3复检出库,4领用出库,5库转移,6退货出库,11不合格退库*/
public static final Short OUT_TYPE_SCRAP = 0;

@ -102,7 +102,7 @@ public class StClassRequestController extends BladeController {
// }
String userRoleName = user.getRoleName();
stClassRequest.setUserRoleName(userRoleName);
if (StrUtil.isNotBlank(userRoleName) && userRoleName.contains("process_engineer")) {
if (StrUtil.isNotBlank(userRoleName) && userRoleName.contains("rb_craft")) {
// 可查询审批状态为「审批中」的数据
stClassRequest.setApprovalStatus(StClassRequest.APPROVAL_STATUS_CHECKING);
}

@ -121,7 +121,7 @@ public class StOtherOutRecordController extends BladeController {
String userRoleName = user.getRoleName();
stOtherOutRecord.setUserRoleName(userRoleName);
if (StrUtil.isNotBlank(userRoleName) && userRoleName.contains("process_engineer")) {
if (StrUtil.isNotBlank(userRoleName) && userRoleName.contains("rb_craft")) {
// 工艺员:可查询审批状态为「审批中」的数据
stOtherOutRecord.setApprovalStatus(StOtherOutRecord.APPROVAL_STATUS_CHECKING);
}

@ -313,22 +313,8 @@ public class StOtherReceiptRecordController extends BladeController {
}
Long shId = storehouse.getId();
// 库位处理(不存在则新建,加入批量集合)
String goodsCode = excelDTO.getGoodsCode();
String location = excelDTO.getLocation();
StStorageLocation storageLocation = stStorageLocationService.findByGoodsCode(goodsCode);
if (storageLocation == null) {
storageLocation = new StStorageLocation();
storageLocation.setShId(shId);
storageLocation.setIsDeleted(0);
storageLocation.setLocation(location);
storageLocation.setGoodsCode(excelDTO.getGoodsCode());
locationSaveList.add(storageLocation); // 加入批量集合,不立即保存
}
Long slId = storageLocation.getId();
// 物料处理(不存在则新建)
// String goodsCode = excelDTO.getGoodsCode();
String goodsCode = excelDTO.getGoodsCode();
StGoods goods = Optional.ofNullable(stGoodsService.queryByCode(goodsCode))
.orElseGet(() -> {
try {
@ -344,6 +330,22 @@ public class StOtherReceiptRecordController extends BladeController {
}
Long goodsId = goods.getId();
// 库位处理(不存在则新建,加入批量集合)
String location = excelDTO.getLocation();
StStorageLocation storageLocation = stStorageLocationService.getLocation(goodsCode,shId,location);
if (storageLocation == null) {
storageLocation = new StStorageLocation();
storageLocation.setShId(shId);
storageLocation.setIsDeleted(0);
storageLocation.setLocation(location);
storageLocation.setGoodsCode(excelDTO.getGoodsCode());
storageLocation.setGoodsName(goods.getGoodsName());
storageLocation.setMaterialModel(goods.getMaterialModel());
storageLocation.setSpecifications(goods.getSpecifications());
locationSaveList.add(storageLocation); // 加入批量集合,不立即保存
}
Long slId = storageLocation.getId();
// 构建出入库单
StStockInoutRecord stockInoutRecord = new StStockInoutRecord();
stockInoutRecord.setDeptId(deptId);
@ -358,6 +360,7 @@ public class StOtherReceiptRecordController extends BladeController {
stockInoutRecord.setQuantity(excelDTO.getQuantity());
stockInoutRecord.setCheckNo(excelDTO.getCheckCode());
stockInoutRecord.setUnitPrice(excelDTO.getBalanceMoney());
stockInoutRecord.setSirMoney(excelDTO.getBalanceMoney()*excelDTO.getQuantity());
stockInoutRecord.setSlId(slId);
stockInoutRecord.setThickness(excelDTO.getThickness());
inoutSaveList.add(stockInoutRecord); // 加入批量集合,不立即保存

@ -56,7 +56,7 @@
AND t.goods_code = #{stClassRequest.goodsCode}
</if>
<if test="stClassRequest.userRoleName != null and stClassRequest.userRoleName.contains('process_engineer')">
<if test="stClassRequest.userRoleName != null and stClassRequest.userRoleName.contains('rb_craft')">
AND t.approval_status = 0
</if>

@ -24,6 +24,7 @@
<result column="APPROVAL_TIME" property="approvalTime"/>
<result column="SCRAP_REASON" property="scrapReason"/>
<result column="MEMO" property="memo"/>
<result column="CR_CODE" property="crCode"/>
</resultMap>
@ -39,7 +40,6 @@
sir.sir_code ,
sir.in_out_date ,
sir.in_out_reason ,
c.picker ,
-- 库房表:出库仓库名称
sh.sh_name AS shName,
-- 制单人姓名(主表create_by关联用户表)
@ -57,7 +57,7 @@
-- 左关联制单人用户表:主表create_by关联用户表id
LEFT JOIN BLADE_USER cu ON soor.create_user = cu.id
-- 左关联领料人用户表:凭证表picker关联用户表id
LEFT JOIN BLADE_USER pu ON c.picker = pu.id
LEFT JOIN BLADE_USER pu ON soor.picker = pu.id
-- 左关联审批人用户表:主表approver关联用户表id
LEFT JOIN BLADE_USER au ON soor.approver = au.id
-- 主表过滤条件:未删除
@ -69,10 +69,10 @@
</if>
<if test="stOtherOutRecord.crCode != null and stOtherOutRecord.crCode != ''">
AND sir.cr_code LIKE '%' || #{stOtherOutRecord.crCode} || '%'
AND soor.cr_code LIKE '%' || #{stOtherOutRecord.crCode} || '%'
</if>
<if test="stOtherOutRecord.userRoleName != null and stOtherOutRecord.userRoleName.contains('process_engineer')">
<if test="stOtherOutRecord.userRoleName != null and stOtherOutRecord.userRoleName.contains('rb_craft')">
AND soor.approval_status = 0
</if>

@ -29,6 +29,7 @@
t3.goods_name ,
t3.material_model ,
t6.check_code ,
t2.check_no as checkCode,
t2.pi_no ,
t2.stove_pi_no ,
t2.quantity_level ,

@ -48,5 +48,7 @@ public interface StStorageLocationMapper extends BaseMapper<StStorageLocation> {
StStorageLocation findByLocation(String location);
List<StStorageLocationVO> selectStStorageLocationAllPage(IPage<StStorageLocationVO> page, StStorageLocationVO stStorageLocation);
StStorageLocation getLocation(String goodsCode, Long shId, String location);
}

@ -82,6 +82,19 @@
AND ROWNUM = 1
</select>
<select id="getLocation" resultMap="stStorageLocationResultMap">
SELECT *
FROM (
SELECT *
FROM ST_STORAGE_LOCATION
WHERE GOODS_CODE = #{goodsCode}
AND SH_ID = #{shId}
AND LOCATION = #{location}
AND IS_DELETED = 0
)
WHERE ROWNUM = 1
</select>
<!-- <select id="selectLocationWithHouse" resultMap="locationWithHouseMap">-->
<!-- SELECT sl.*,-->
<!-- sh.id AS sh_id,-->

@ -51,5 +51,6 @@ public interface IStStorageLocationService extends BaseService<StStorageLocation
IPage<StStorageLocationVO> selectStStorageLocationAllPage(IPage<StStorageLocationVO> page, StStorageLocationVO stStorageLocation);
StStorageLocation getLocation(String goodsCode, Long shId, String location);
}

@ -179,7 +179,7 @@ public class StBuyOrderServiceImpl extends BaseServiceImpl<StBuyOrderMapper, StB
approvalRecord.setContent("额外提请审批");
R<User> ruser = userClient.userInfoById(buyOrder.getDeclareMan());
User user1 = ruser.getData();
approvalRecord.setCurrentRoleId(Long.valueOf(user1.getRoleId()));
approvalRecord.setCurrentRoleId(Long.valueOf(user1.getRoleId().split(",")[0]));
R<String> roleName = sysClient.getRoleName(approvalRecord.getCurrentRoleId());
String roleNameData = roleName.getData();
approvalRecord.setCurrentRoleName(roleNameData);
@ -224,11 +224,14 @@ public class StBuyOrderServiceImpl extends BaseServiceImpl<StBuyOrderMapper, StB
buyOrder.setApprovalStatus(approvalResult);
baseMapper.updateById(buyOrder);
R<String> roleIdResp = sysClient.getRoleIds("000000", "保管员");
String roleId = roleIdResp.getData();
MesApprovalRecordEntity updateRecord = new MesApprovalRecordEntity();
updateRecord.setBizId(orderId);
updateRecord.setBizType("额外提请审批");
updateRecord.setOpinion("");
updateRecord.setNextRoleId(Long.valueOf(approver.getRoleId()));
updateRecord.setNextRoleId(Long.valueOf(roleId));
updateRecord.setStatus(Integer.valueOf(approvalResult));
mesApprovalRecordClient.update(updateRecord);

@ -86,6 +86,7 @@ public class StClassRequestServiceImpl extends BaseServiceImpl<StClassRequestMap
ccr.setCreateUser(user.getUserId());
ccr.setCreateTime(new Date());
ccr.setDeptId(user.getDeptId());
this.save(ccr);
if (Boolean.TRUE.equals(stGoods.getProcessApproval())) {
// 特殊物料:进入审批流程,状态设为【审批中】
ccr.setApprovalStatus(StClassRequest.APPROVAL_STATUS_CHECKING);
@ -97,7 +98,7 @@ public class StClassRequestServiceImpl extends BaseServiceImpl<StClassRequestMap
approvalRecord.setContent("班组提请审批");
R<User> ruser = userClient.userInfoById(ccr.getCrMan());
User user1 = ruser.getData();
approvalRecord.setCurrentRoleId(Long.valueOf(user1.getRoleId()));
approvalRecord.setCurrentRoleId(Long.valueOf(user1.getRoleId().split(",")[0]));
R<String> roleName = sysClient.getRoleName(approvalRecord.getCurrentRoleId());
String roleNameData = roleName.getData();
approvalRecord.setCurrentRoleName(roleNameData);
@ -105,12 +106,14 @@ public class StClassRequestServiceImpl extends BaseServiceImpl<StClassRequestMap
R<String> roleIdResp = sysClient.getRoleIds("000000", approvalRecord.getNextRoleName());
String roleId = roleIdResp.getData();
approvalRecord.setNextRoleId(Long.valueOf(roleId));
mesApprovalRecordClient.save(approvalRecord);
} else {
// 普通物料:无需审批,状态设为【无需审批】+ 直接发布
ccr.setApprovalStatus(StClassRequest.APPROVAL_STATUS_NONE);
ccr.setCurStatus(StClassRequest.CURSTATUS_RELEASED); // 直接生效
}
this.updateById(ccr);
// PfFlow pfFlow = this.getByCode("FLOW_ST_001");
// if (pfFlow != null && pfFlow.getUsed() && Boolean.TRUE.equals(ccr.getSpecial())) {
@ -146,11 +149,12 @@ public class StClassRequestServiceImpl extends BaseServiceImpl<StClassRequestMap
ccr.setApprovalStatus(StClassRequest.APPROVAL_STATUS_NONE);
ccr.setCurStatus(StClassRequest.CURSTATUS_RELEASED);
}
this.updateById(ccr);
}
}
/* 1.2 一次性 saveOrUpdateBatch(零逐条 SQL)*/
return this.saveOrUpdateBatch(list);
// return this.saveOrUpdateBatch(list);
}
return true;
@ -161,7 +165,7 @@ public class StClassRequestServiceImpl extends BaseServiceImpl<StClassRequestMap
public void approvalRequest(Long id, Short approvalResult, BladeUser approver) {
// 1. 校验工艺员权限
// String roleName = approver.getRoleName();
if (Objects.equals(approver.getRoleName(), "process_engineer")){
if (Objects.equals(approver.getRoleName(), "rb_craft")){
// 2. 查询数据
StClassRequest ccr = this.getById(id);
if (ccr == null) {
@ -183,11 +187,14 @@ public class StClassRequestServiceImpl extends BaseServiceImpl<StClassRequestMap
? StClassRequest.CURSTATUS_RELEASED : StClassRequest.CURSTATUS_NEW);
this.updateById(ccr);
R<String> roleIdResp = sysClient.getRoleIds("000000", "热表-工艺员");
String roleId = roleIdResp.getData();
MesApprovalRecordEntity updateRecord = new MesApprovalRecordEntity();
updateRecord.setBizId(id);
updateRecord.setBizType("班组提请审批");
updateRecord.setOpinion("");
updateRecord.setNextRoleId(Long.valueOf(approver.getRoleId()));
updateRecord.setNextRoleId(Long.valueOf(roleId));
updateRecord.setStatus(Integer.valueOf(approvalResult));
mesApprovalRecordClient.update(updateRecord);
@ -368,6 +375,7 @@ public class StClassRequestServiceImpl extends BaseServiceImpl<StClassRequestMap
stOtherOutRecord.setCrCode(crCode);
stOtherOutRecord.setShId(stock.getShId());
stOtherOutRecord.setWoCode(woCode);
stOtherOutRecord.setPicker(user.getUserId());
stOtherOutRecordService.save(stOtherOutRecord);
return sirCode;

@ -8,10 +8,14 @@ import jakarta.annotation.Resource;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.dashboard.feign.IPartClient;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.wms.excel.StGlassCakeOutExcel;
import org.springblade.wms.mapper.StGlassCakeOutMapper;
import org.springblade.wms.mapper.StOtherReceiptRecordMapper;
import org.springblade.wms.mapper.StRealtimeStockMapper;
import org.springblade.wms.pojo.dto.StGlassCakeOutDTO;
import org.springblade.wms.pojo.entity.*;
@ -23,6 +27,7 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* @version 1.0
@ -47,6 +52,10 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap
IStStorehouseService stStorehouseService;
@Resource
IStStorageLocationService stStorageLocationService;
@Resource
StOtherReceiptRecordMapper stOtherReceiptRecordMapper;
@Resource
IPartClient partClient;
// @Resource
// IDsPartService dsPartService;
// @Resource
@ -75,60 +84,60 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap
// Long userId = Long.valueOf(user.getUserId());
Date now = new Date();
WorkOrder workOrder = stOtherReceiptRecordMapper.getByWoCode(dto.getWoCode());
YieldOrder yieldOrder = stOtherReceiptRecordMapper.getByYoId(workOrder.getYoId());
DsPartEntity partOne = partClient.getPart(workOrder.getPartCode(),yieldOrder.getPartVersion());
List<DsPartRelationEntity> partRelationEntityList = partClient.getSubPart(partOne.getId());
// WorkOrder workOrder = workOrderMapper.getWorkOrderByCardNo(dto.getCardNo(),s1);
List<DsPartEntity> glassCakePartList = new ArrayList<>();
if (!CollectionUtils.isEmpty(partRelationEntityList)) {
// 步骤1:提取所有非空的childPartId并去重(避免null和重复ID,减少查询压力)
List<Long> childPartIdList = partRelationEntityList.stream()
.map(DsPartRelationEntity::getChildPartId) // 提取子件ID
.filter(Objects::nonNull) // 过滤null的ID
.distinct() // 去重,避免重复查询
.collect(Collectors.toList());
// 步骤2:批量查询DS_PART表(一次SQL,性能最优)
if (!CollectionUtils.isEmpty(childPartIdList)) {
// 调用dsPartService的批量查询方法(根据ID列表查DS_PART)
List<DsPartEntity> allChildPartList = partClient.batchParts(childPartIdList);
// 步骤3:筛选出IS_CLASS_CAKE为"玻璃饼"的记录(核心过滤)
if (!CollectionUtils.isEmpty(allChildPartList)) {
glassCakePartList = allChildPartList.stream()
.filter(part -> Boolean.TRUE.equals(part.getIsGlassCake()))
.collect(Collectors.toList());
}
}
}
// WorkOrder workOrder = new WorkOrder();
// workOrder.setCardNo(dto.getCardNo()); // 卡号(与DTO的cardNo一致)
// workOrder.setWoCode("WO-202602110001"); // 工单号
// workOrder.setPartCode("PART-MAIN001"); // 主零件编码
// workOrder.setMakeQty(3.0); // 生产数量:100台
//
// DsPartEntity partOne = dsPartService.selectDsPartByPatCodeAndVersion(workOrder.getPartCode());
// List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partOne.getId());
// DsPartEntity partOne = new DsPartEntity();
// partOne.setId(1001L); // 主零件ID
// partOne.setPartCode(workOrder.getPartCode()); // 与工单主零件编码一致
// partOne.setPartName("XX设备-主组装件");
//
// List<DsPartEntity> glassCakePartList = new ArrayList<>();
// if (!CollectionUtils.isEmpty(partRelationEntityList)) {
// // 步骤1:提取所有非空的childPartId并去重(避免null和重复ID,减少查询压力)
// List<Long> childPartIdList = partRelationEntityList.stream()
// .map(DsPartRelationEntity::getChildPartId) // 提取子件ID
// .filter(Objects::nonNull) // 过滤null的ID
// .distinct() // 去重,避免重复查询
// .collect(Collectors.toList());
//
// // 步骤2:批量查询DS_PART表(一次SQL,性能最优)
// if (!CollectionUtils.isEmpty(childPartIdList)) {
// // 调用dsPartService的批量查询方法(根据ID列表查DS_PART)
// List<DsPartEntity> allChildPartList = dsPartService.selectDsPartByIds(childPartIdList);
// List<DsPartEntity> glassCakePartList = new ArrayList<>();
//
// // 步骤3:筛选出IS_CLASS_CAKE为"玻璃饼"的记录(核心过滤)
// if (!CollectionUtils.isEmpty(allChildPartList)) {
// glassCakePartList = allChildPartList.stream()
// .filter(part -> Boolean.TRUE.equals(part.getIsClassCake()))
// .collect(Collectors.toList());
// }
// }
// }
WorkOrder workOrder = new WorkOrder();
workOrder.setCardNo(dto.getCardNo()); // 卡号(与DTO的cardNo一致)
workOrder.setWoCode("WO-202602110001"); // 工单号
workOrder.setPartCode("PART-MAIN001"); // 主零件编码
workOrder.setMakeQty(3.0); // 生产数量:100台
DsPartEntity partOne = new DsPartEntity();
partOne.setId(1001L); // 主零件ID
partOne.setPartCode(workOrder.getPartCode()); // 与工单主零件编码一致
partOne.setPartName("XX设备-主组装件");
List<DsPartEntity> glassCakePartList = new ArrayList<>();
// 玻璃饼1:印字Y,粉重500g,材料号MAT001,厚度5mm,定额0.5/台
DsPartEntity cake1 = new DsPartEntity();
cake1.setId(2001L);
cake1.setPartCode("03-07-65-39-B3");
cake1.setPartName("玻璃饼-500g-印字Y-5mm");
cake1.setIsPrint("1"); // 印字
cake1.setPowderWeight(new BigDecimal("2.5")); // 粉重
cake1.setMaterial("kk1"); // 材料号
cake1.setFormingThickness(new BigDecimal("3.5")); // 成型厚度
cake1.setQuota(5.0); // 定额:每台产品用0.5个
glassCakePartList.add(cake1);
// // 玻璃饼1:印字Y,粉重500g,材料号MAT001,厚度5mm,定额0.5/台
// DsPartEntity cake1 = new DsPartEntity();
// cake1.setId(2001L);
// cake1.setPartCode("03-07-65-39-B3");
// cake1.setPartName("玻璃饼-500g-印字Y-5mm");
// cake1.setIsPrint("1"); // 印字
// cake1.setPowderWeight(new BigDecimal("2.5")); // 粉重
// cake1.setMaterial("kk1"); // 材料号
// cake1.setFormingThickness(new BigDecimal("3.5")); // 成型厚度
// cake1.setQuota(5.0); // 定额:每台产品用0.5个
// glassCakePartList.add(cake1);
// 3. 初始化预出库列表(收集所有库存充足的预出库实体)
List<StGlassCakeOut> preOutStockList = new ArrayList<>();

@ -1,16 +1,12 @@
package org.springblade.wms.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.common.feign.IMesApprovalRecordClient;
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity;
import org.springblade.system.feign.ISysClient;
@ -18,18 +14,16 @@ import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springblade.wms.excel.StOtherOutRecordExcel;
import org.springblade.wms.mapper.StOtherOutRecordMapper;
import org.springblade.wms.pojo.dto.StOtherOutRecordDTO;
import org.springblade.wms.pojo.entity.*;
import org.springblade.wms.pojo.entity.StOtherOutRecord;
import org.springblade.wms.pojo.entity.StRealtimeStock;
import org.springblade.wms.pojo.entity.StStockInoutRecord;
import org.springblade.wms.pojo.vo.StOtherOutRecordVO;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springblade.wms.service.IStOtherOutRecordService;
import org.springblade.wms.service.IStRealtimeStockService;
import org.springblade.wms.service.IStStockInoutRecordService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -84,7 +78,7 @@ public class StOtherOutRecordServiceImpl extends BaseServiceImpl<StOtherOutRecor
approvalRecord.setContent("报废审批");
R<User> ruser = userClient.userInfoById(stOtherOutRecord.getCreateUser());
User user1 = ruser.getData();
approvalRecord.setCurrentRoleId(Long.valueOf(user1.getRoleId()));
approvalRecord.setCurrentRoleId(Long.valueOf(user1.getRoleId().split(",")[0]));
R<String> roleName = sysClient.getRoleName(approvalRecord.getCurrentRoleId());
String roleNameData = roleName.getData();
approvalRecord.setCurrentRoleName(roleNameData);
@ -100,7 +94,7 @@ public class StOtherOutRecordServiceImpl extends BaseServiceImpl<StOtherOutRecor
@Transactional(rollbackFor = Exception.class)
public void approvalRequest(Long id, Short approvalResult, BladeUser approver) {
// 1. 校验工艺员权限
if (Objects.equals(approver.getRoleName(), "process_engineer")) {
if (Objects.equals(approver.getRoleName(), "rb_craft")) {
// 2. 查询数据
StOtherOutRecord stOtherOutRecord = this.getById(id);
if (stOtherOutRecord == null) {
@ -114,11 +108,14 @@ public class StOtherOutRecordServiceImpl extends BaseServiceImpl<StOtherOutRecor
stOtherOutRecord.setApprovalStatus(approvalResult);
this.updateById(stOtherOutRecord);
R<String> roleIdResp = sysClient.getRoleIds("000000", "热表-工艺员");
String roleId = roleIdResp.getData();
MesApprovalRecordEntity updateRecord = new MesApprovalRecordEntity();
updateRecord.setBizId(id);
updateRecord.setBizType("报废审批");
updateRecord.setOpinion("");
updateRecord.setNextRoleId(Long.valueOf(approver.getRoleId()));
updateRecord.setNextRoleId(Long.valueOf(roleId));
updateRecord.setStatus(Integer.valueOf(approvalResult));
mesApprovalRecordClient.update(updateRecord);
@ -278,6 +275,7 @@ public class StOtherOutRecordServiceImpl extends BaseServiceImpl<StOtherOutRecor
newOutRecord.setCreateTime(new Date());
newOutRecord.setUpdateUser(user.getUserId());
newOutRecord.setUpdateTime(new Date());
newOutRecord.setPicker(stOtherOutRecord.getPicker());
// 保存当前出库单(每条明细对应一条新出库单)
this.save(newOutRecord);

@ -171,6 +171,11 @@ public class StStorageLocationServiceImpl extends BaseServiceImpl<StStorageLocat
return this.saveOrUpdateBatch(stStorageLocations);
}
@Override
public StStorageLocation getLocation(String goodsCode, Long shId, String location) {
return stStorageLocationMapper.getLocation(goodsCode,shId,location);
}
@Override
public List<StStorageLocationExcel> exportStStorageLocation(Wrapper<StStorageLocation> queryWrapper) {
List<StStorageLocationExcel> stStorageLocationList = baseMapper.exportStStorageLocation(queryWrapper);

@ -96,7 +96,7 @@ public class StWmsRequestServiceImpl extends BaseServiceImpl<StWmsRequestMapper,
approvalRecord.setContent("仓库提请审批");
R<User> ruser = userClient.userInfoById(stWmsRequest.getCreateUser());
User user1 = ruser.getData();
approvalRecord.setCurrentRoleId(Long.valueOf(user1.getRoleId()));
approvalRecord.setCurrentRoleId(Long.valueOf(user1.getRoleId().split(",")[0]));
R<String> roleName = sysClient.getRoleName(approvalRecord.getCurrentRoleId());
String roleNameData = roleName.getData();
approvalRecord.setCurrentRoleName(roleNameData);
@ -139,11 +139,14 @@ public class StWmsRequestServiceImpl extends BaseServiceImpl<StWmsRequestMapper,
wmsRequest.setApprovalStatus(approvalResult);
baseMapper.updateById(wmsRequest);
R<String> roleIdResp = sysClient.getRoleIds("000000", "保管员");
String roleId = roleIdResp.getData();
MesApprovalRecordEntity updateRecord = new MesApprovalRecordEntity();
updateRecord.setBizId(id);
updateRecord.setBizType("仓库提请审批");
updateRecord.setOpinion("");
updateRecord.setNextRoleId(Long.valueOf(approver.getRoleId()));
updateRecord.setNextRoleId(Long.valueOf(roleId));
updateRecord.setStatus(Integer.valueOf(approvalResult));
mesApprovalRecordClient.update(updateRecord);

Loading…
Cancel
Save