导入修改

This commit is contained in:
秦鸿展
2026-04-15 17:10:44 +08:00
parent ac51afdb7e
commit be323e975a
4 changed files with 145 additions and 21 deletions
@@ -648,19 +648,15 @@ public class PickingOrderDomainService {
outOrderAbnormalService.genOutOrderAbnormal(outOrderAbnormalBaseDO, 1);
//更新出库单状态
updateStockOutOrder(pickingOrderPO);
// 点击完成拣货时,不管数量多少,强制将出库单状态推进到拣货完成(7或已出库(9
// 点击完成拣货时,不管实拣数量多少,强制将出库单置为拣货完成(7
if (1 == pickingOrderPO.getType()) {
StockOutOrder forceUpdate = new StockOutOrder();
forceUpdate.setOutOrderNumber(pickingOrderPO.getOrderNumber());
int forceStatus = (pickingOrderPO.getReview() != null && pickingOrderPO.getReview() == 2) ? 9 : 7;
forceUpdate.setStatus(forceStatus);
forceUpdate.setStatus(7);
forceUpdate.setUpdateBy(loginUser.getUserid());
forceUpdate.setUpdateByName(loginUser.getUsername());
forceUpdate.setUpdateTime(new Date());
stockOutOrderService.update(forceUpdate, new com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<StockOutOrder>().lambda().eq(StockOutOrder::getOutOrderNumber, pickingOrderPO.getOrderNumber()));
if (pickingOrderPO.getReview() != null && pickingOrderPO.getReview() == 2) {
genHandoverTaskOrder(pickingOrderPO);
}
}
//同步BMS结算系统,生成业务单据
//这里只有不需要复核的时候才推送,需要复核的在复核流程推送
@@ -177,12 +177,20 @@ public class ExcelParseService {
private void shipperParam(StockOutOrderDO stockOutOrderDO){
String customerName = stockOutOrderDO.getCustomerName();
if (StringUtils.isEmpty(customerName)) return;
Long loginOrganizationId = null;
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
loginOrganizationId = loginUser.getUserPo().getOrganizationId();
}
if (!customerName.matches("\\d+")) {
AjaxResult ajaxResult = userServiceFeign.getInfoByName(customerName);
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取客户信息失败");
}
UserPo userPo = JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
if (!shipperMatchesImporterOrganization(userPo, loginOrganizationId)) {
throw new ServiceException("当前登录用户组织下不存在该货主信息或客户名称与组织不匹配");
}
stockOutOrderDO.setShipperId(userPo.getUserId());
stockOutOrderDO.setShipperCode(userPo.getUserMemberCode());
stockOutOrderDO.setShipperName(userPo.getUserName());
@@ -192,6 +200,9 @@ public class ExcelParseService {
throw new ServiceException("获取货主信息失败");
}
UserPo userPo = JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
if (!shipperMatchesImporterOrganization(userPo, loginOrganizationId)) {
throw new ServiceException("当前登录用户组织下不存在该货主信息或客户名称与组织不匹配");
}
stockOutOrderDO.setShipperId(userPo.getUserId());
stockOutOrderDO.setShipperCode(userPo.getUserMemberCode());
stockOutOrderDO.setShipperName(userPo.getUserName());
@@ -207,12 +218,20 @@ public class ExcelParseService {
private void customerParam(StockOutOrderDO stockOutOrderDO){
String customerName = stockOutOrderDO.getCustomerName();
if (StringUtils.isEmpty(customerName)) return;
Long loginOrganizationId = null;
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
loginOrganizationId = loginUser.getUserPo().getOrganizationId();
}
if (!customerName.matches("\\d+")) {
AjaxResult ajaxResult = userServiceFeign.getInfoByName(customerName);
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取客户信息失败");
}
UserPo userPo = JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
if (!shipperMatchesImporterOrganization(userPo, loginOrganizationId)) {
throw new ServiceException("当前登录用户组织下不存在该客户信息或客户名称与组织不匹配");
}
stockOutOrderDO.setCustomerId(userPo.getUserId());
stockOutOrderDO.setCustomerCode(userPo.getUserMemberCode());
stockOutOrderDO.setCustomerName(userPo.getUserName());
@@ -222,6 +241,9 @@ public class ExcelParseService {
throw new ServiceException("获取客户信息失败");
}
UserPo userPo = JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
if (!shipperMatchesImporterOrganization(userPo, loginOrganizationId)) {
throw new ServiceException("当前登录用户组织下不存在该客户信息或客户名称与组织不匹配");
}
stockOutOrderDO.setCustomerId(userPo.getUserId());
stockOutOrderDO.setCustomerCode(userPo.getUserMemberCode());
stockOutOrderDO.setCustomerName(userPo.getUserName());
@@ -307,18 +329,39 @@ public class ExcelParseService {
* @param customerName 客户名称(在出库单中,客户名称就是货主名称)
* @return 货主ID,如果找不到则返回null
*/
/**
* 导入出库单:解析出的货主用户是否属于当前登录用户同一组织(organizationId)。
* 仅当登录用户带有 organizationId 时启用过滤;否则保持与旧行为一致。
*/
private boolean shipperMatchesImporterOrganization(UserPo userPo, Long loginOrganizationId) {
if (loginOrganizationId == null) {
return true;
}
if (userPo == null) {
return false;
}
Long oid = userPo.getOrganizationId();
return oid != null && loginOrganizationId.equals(oid);
}
private Long getShipperIdByCustomerName(String customerName) {
if (StringUtils.isEmpty(customerName)) {
return null;
}
Long loginOrganizationId = null;
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
loginOrganizationId = loginUser.getUserPo().getOrganizationId();
}
try {
if (!customerName.matches("\\d+")) {
// 按名称查询
AjaxResult ajaxResult = userServiceFeign.getInfoByName(customerName);
if ("200".equals(String.valueOf(ajaxResult.get("code")))) {
UserPo userPo = JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
if (userPo != null) {
if (userPo != null && shipperMatchesImporterOrganization(userPo, loginOrganizationId)) {
return userPo.getUserId();
}
}
@@ -327,7 +370,7 @@ public class ExcelParseService {
AjaxResult ajaxResult = userServiceFeign.getInfo(Long.valueOf(customerName));
if ("200".equals(String.valueOf(ajaxResult.get("code")))) {
UserPo userPo = JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
if (userPo != null) {
if (userPo != null && shipperMatchesImporterOrganization(userPo, loginOrganizationId)) {
return userPo.getUserId();
}
}
@@ -335,7 +378,7 @@ public class ExcelParseService {
} catch (Exception e) {
// 如果查询失败,返回null,后续在shipperParam方法中会再次尝试
}
return null;
}