Merge remote-tracking branch 'origin/master'

liweidong
liuqingkun 4 weeks ago
commit 0c45ddd995
  1. 11
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java
  2. 48
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/CenterTeam.java
  3. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java
  4. 26
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/CenterTeamVO.java
  5. 32
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IOrderBoxClient.java
  6. 43
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java
  7. 39
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java
  8. 93
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java
  9. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java
  10. 76
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java
  11. 105
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java
  12. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java
  13. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.java
  14. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.xml
  15. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java
  16. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java
  17. 46
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java
  18. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java
  19. 38
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/CenterTeamWrapper.java
  20. 28
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/OrderBoxClient.java
  21. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java
  22. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java
  23. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java
  24. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java
  25. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java
  26. 443
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java
  27. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  28. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  29. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java
  30. 66
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java
  31. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml
  32. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  33. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
  34. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java
  35. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java
  36. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  37. 99
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
  38. 59
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
  39. 31
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java
  40. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  41. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  42. 85
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java
  43. 6
      blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java
  44. 3
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java

@ -1,7 +1,10 @@
package org.springblade.job.processor.logistics;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.dashboard.feign.IOrderBoxClient;
import org.springblade.desk.dashboard.feign.IPartClient;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
@ -14,10 +17,12 @@ import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
@Data
@Slf4j
public class OrderBoxRefinement implements BasicProcessor {
@Resource
private IOrderBoxClient client;
@Override
public ProcessResult process(TaskContext taskContext) throws Exception {
System.out.println("hello world");
log.info("hello world");
public ProcessResult process(TaskContext context) throws Exception {
client.monitoringStation();
return new ProcessResult(true);
}
}

@ -0,0 +1,48 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
/**
* [班组用户关联] 实体类
*
* @author Tom Shuo
* @since 2026-01-13
*/
@Data
@TableName("BS_CENTER_TEAM")
@Schema(description = "RelTeamSetUser Entity对象")
@EqualsAndHashCode(callSuper = true)
public class CenterTeam extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 作业中心id
*/
public static final String COL_TEAM_SET_ID = "WC_ID";
/**
*班组
*/
public static final String COL_USER_ID = "TS_ID";
/**
* [班组]id
*/
@Schema(description = "[班组]id")
private Long tsId;
/**
* 作业中心id
*/
@Schema(description = "作业中心id")
private Long wcId;
}

@ -180,5 +180,7 @@ public class TeamSet extends BaseEntity {
@TableField(exist = false)
private Long deptId;
@TableField(exist = false)
private String teamId;
}

@ -0,0 +1,26 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.basic.pojo.entity.CenterTeam;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import java.io.Serial;
/**
* [班组] 视图实体类
*
* @author Tom Shuo
* @since 2025-12-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CenterTeamVO extends CenterTeam {
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,32 @@
package org.springblade.desk.dashboard.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 零件服务Feign客户端
* 修正点所有GET请求参数添加@RequestParam注解解决Feign多Body参数异常
* @author liweidong
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IOrderBoxClient {
String API_PREFIX = "/feign/client/order-box";
String MONITORING_STATION = API_PREFIX + "/monitoring-station";
/**
* 零件同步
*/
@GetMapping(MONITORING_STATION)
void monitoringStation();
}

@ -20,5 +20,48 @@ import java.io.Serial;
public class ReviewDutyDTO extends ReviewDuty {
@Serial
private static final long serialVersionUID = 1L;
/**
* 审理单Id
*/
private String trialId;
/**
* 序号
*/
private String trialSeq;
/**
* 物料号
*/
private String mdsItemCode;
/**
* 批次号
*/
private String batchNo;
/**
* 相关物料号
*/
private String corrMdsItemCode;
/**
* 相关批次号
*/
private String corrBatchNo;
/**
* 备注
*/
private String note;
/**
* 数量
*/
private Short reqQty;
/**
* 单位
*/
private String unit;
}

@ -20,5 +20,44 @@ import java.io.Serial;
public class ReviewFaultDTO extends ReviewFault {
@Serial
private static final long serialVersionUID = 1L;
/**
* 审理单Id
*/
private String trialId;
/**
* 序号
*/
private String trialSeq;
/**
* 故障类别
*/
private String faultType;
/**
* 问题大类
*/
private String questClass;
/**
* 问题小类
*/
private String questSubclass;
/**
* 比例
*/
private Double proportion;
/**
* 数量
*/
private Long faultQty;
/**
* 描述
*/
private String describe;
}

@ -21,4 +21,97 @@ public class ReviewSheetDTO extends ReviewSheet {
@Serial
private static final long serialVersionUID = 1L;
/**
* 批次号
*/
private String batchNo;
/**
* 车间订单号/外协交件号.业务号
*/
private String businessNo;
/**
* 检验员编码
*/
private String checkUserCode;
/**
* 物料编码
*/
private String mdsItemCode;
/**
* 物料名称
*/
private String mdsItemName;
/**
* 质量等级
*/
private String levels;
/**
* 发现部门
*/
private String findWorkShop;
/**
* 是否质量问题
*/
private Boolean qualityquestion;
/**
* 审理单状态
*/
private String trialStatus = "21";
/**
* 总数量
*/
private Double needQty;
/**
* 上级编号
*/
private String preCode;
/**
* 比例
*/
private Double proporTion;
/**
* 不合格数量
*/
private Double subQty;
/**
* 简单原因
*/
private String easyReason;
/**
* 处置单类型1-零件模式/2-装配模式/5-售后模式
*/
private String trialType;
/**
* 工序号
*/
private String seqNo;
/**
* 工序名称
*/
private String seqName;
/**
* 发现人
*/
private String findUserCode;
/**
* 处置单类型1-提交质保/2-提交工艺/3-提交设计
*/
private String hearDis;
}

@ -423,4 +423,6 @@ public class ReviewSheet extends BaseEntity {
//当前工序id
private Long ppsId;
private Integer submitType;
}

@ -30,6 +30,7 @@ import org.springblade.desk.basic.excel.PlatingSmallExcel;
import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.pojo.entity.*;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.basic.service.IShiftsService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.ITeamTimeService;
@ -73,6 +74,9 @@ public class TeamSetController extends BladeController {
@Resource
private IShiftsService shiftService;
@Resource
private IRelTeamSetUserService relTeamSetUserService;
/**
* [班组] 详情
*/
@ -93,14 +97,25 @@ public class TeamSetController extends BladeController {
List<User> teams = new ArrayList<>();
QueryWrapper<TeamSet> qw = Condition.getQueryWrapper(teamSet);
TeamSet detail = service.getOne(qw);
if(detail != null){
String teamId = detail.getTeamMemberId();
if(null != teamId && !"".equals(teamId)){
teams = iUserClient.userUNListByIds(teamId);
}else{
teams = iUserClient.userUNListByIds("");
}
QueryWrapper<RelTeamSetUser> qwuser = new QueryWrapper<>();
qwuser.eq("TEAM_SET_ID", detail.getId());
List<RelTeamSetUser> users = relTeamSetUserService.list(qwuser);
if(null != users && users.size() > 0){
List<Long> userIds = users.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList());
String userId = Func.toStr(userIds);
teams = iUserClient.userUNListByIds(userId);
}else{
teams = iUserClient.userUNListByIds("");
}
// if(detail != null){
// String teamId = detail.getTeamMemberId();
// if(null != teamId && !"".equals(teamId)){
// teams = iUserClient.userUNListByIds(teamId);
// }else{
// teams = iUserClient.userUNListByIds("");
// }
// }
return R.data(teams);
}
@ -111,12 +126,22 @@ public class TeamSetController extends BladeController {
List<User> teams = new ArrayList<>();
QueryWrapper<TeamSet> qw = Condition.getQueryWrapper(teamSet);
TeamSet detail = service.getOne(qw);
if(detail != null){
String teamId = detail.getTeamMemberId();
if(null != teamId && !"".equals(teamId)){
teams = iUserClient.userListByIds(teamId);
}
QueryWrapper<RelTeamSetUser> qwuser = new QueryWrapper<>();
qwuser.eq("TEAM_SET_ID", detail.getId());
List<RelTeamSetUser> users = relTeamSetUserService.list(qwuser);
if(null != users && users.size() > 0){
List<Long> userIds = users.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList());
String userId = Func.toStr(userIds);
teams = iUserClient.userListByIds(userId);
}
// if(detail != null){
// String teamId = detail.getTeamMemberId();
// if(null != teamId && !"".equals(teamId)){
// teams = iUserClient.userListByIds(teamId);
// }
// }
return R.data(teams);
}
@ -156,6 +181,7 @@ public class TeamSetController extends BladeController {
}
@PostMapping("/updateUserId")
@ApiOperationSupport(order = 31)
@Operation(summary = "设置人员Id保存", description = "传入WorkCenter List")
@ -167,16 +193,22 @@ public class TeamSetController extends BladeController {
String result = null;
String team = null;
if(null != teamIds){
result = teamIds.stream()
.map(Object::toString) // 或者直接使用String::valueOf,效果相同
.collect(Collectors.joining(","));
List<User> teams = iUserClient.userListByIds(result);
team= teams.stream()
.map(user -> String.valueOf(user.getRealName()))
.collect(Collectors.joining(","));
for(Long teamId:teamIds){
RelTeamSetUser relTeamSetUser = new RelTeamSetUser();
relTeamSetUser.setTeamSetId(detail.getId());
relTeamSetUser.setUserId(teamId);
relTeamSetUserService.save(relTeamSetUser);
}
// result = teamIds.stream()
// .map(Object::toString) // 或者直接使用String::valueOf,效果相同
// .collect(Collectors.joining(","));
//
//
// List<User> teams = iUserClient.userListByIds(result);
//
// team= teams.stream()
// .map(user -> String.valueOf(user.getRealName()))
// .collect(Collectors.joining(","));
}
detail.setTeamMemberId(result);

@ -26,15 +26,9 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.WorkCenterExcel;
import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
import org.springblade.desk.basic.pojo.entity.PlatingSmall;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.entity.*;
import org.springblade.desk.basic.pojo.vo.WorkCenterVO;
import org.springblade.desk.basic.service.ICraftAbilityService;
import org.springblade.desk.basic.service.IOemCraftAbilityService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.basic.service.*;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.WorkCenterWrapper;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
@ -76,6 +70,8 @@ public class WorkCenterController extends BladeController {
private IOemCraftAbilityService oemCraftAbilityService;
@Resource
private IUserClient iUserClient;
@Resource
private ICenterTeamService teamCenterService;
/**
* [作业中心] 详情
*/
@ -183,19 +179,35 @@ public class WorkCenterController extends BladeController {
List<TeamSet> teams = new ArrayList<>();
QueryWrapper<WorkCenter> qw = Condition.getQueryWrapper(workCenter);
WorkCenter detail = service.getOne(qw);
if(detail != null){
String teamId = detail.getTeamId();
if(null != teamId && !"".equals(teamId)){
List<Long> ids = Func.toLongList(teamId);
QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
queryWrapper.notIn("id",ids);
teams = teamService.list(queryWrapper);
}else{
QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
teams = teamService.list(queryWrapper);
}
QueryWrapper<CenterTeam> qwteam = new QueryWrapper<>();
qwteam.eq("WC_ID",detail.getId());
List<CenterTeam> teamList = teamCenterService.list(qwteam);
List<Long> ids = new ArrayList<>();
if(null != teamList && teamList.size() > 0){
ids = teamList.stream().map(CenterTeam::getTsId).collect(Collectors.toList());
QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
queryWrapper.notIn("id",ids);
teams = teamService.list(queryWrapper);
}else{
QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
teams = teamService.list(queryWrapper);
}
// if(detail != null){
// String teamId = detail.getTeamId();
// if(null != teamId && !"".equals(teamId)){
// List<Long> ids = Func.toLongList(teamId);
// QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
// queryWrapper.notIn("id",ids);
// teams = teamService.list(queryWrapper);
// }else{
// QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
// teams = teamService.list(queryWrapper);
// }
//
// }
return R.data(teams);
}
@ -206,15 +218,27 @@ public class WorkCenterController extends BladeController {
List<TeamSet> teams = new ArrayList<>();
QueryWrapper<WorkCenter> qw = Condition.getQueryWrapper(workCenter);
WorkCenter detail = service.getOne(qw);
if(detail != null){
String teamId = detail.getTeamId();
if(null != teamId && !"".equals(teamId)){
List<Long> ids = Func.toLongList(teamId);
QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id",ids);
teams = teamService.list(queryWrapper);
}
QueryWrapper<CenterTeam> qwteam = new QueryWrapper<>();
qwteam.eq("WC_ID",detail.getId());
List<CenterTeam> teamList = teamCenterService.list(qwteam);
List<Long> ids = new ArrayList<>();
if(null != teamList && teamList.size() > 0){
ids = teamList.stream().map(CenterTeam::getTsId).collect(Collectors.toList());
QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id",ids);
teams = teamService.list(queryWrapper);
}
// if(detail != null){
// String teamId = detail.getTeamId();
// if(null != teamId && !"".equals(teamId)){
// List<Long> ids = Func.toLongList(teamId);
// QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
// queryWrapper.in("id",ids);
// teams = teamService.list(queryWrapper);
// }
// }
return R.data(teams);
}
@ -251,7 +275,6 @@ public class WorkCenterController extends BladeController {
return R.data(teams);
}
@PostMapping("/updateTeamId")
@ApiOperationSupport(order = 31)
@Operation(summary = "设置班组Id保存", description = "传入WorkCenter List")
@ -263,17 +286,25 @@ public class WorkCenterController extends BladeController {
String result = null;
String team = null;
if(null != teamIds){
result = teamIds.stream()
.map(Object::toString) // 或者直接使用String::valueOf,效果相同
.collect(Collectors.joining(","));
QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id",teamIds);
List<TeamSet> teams = teamService.list(queryWrapper);
for(Long teamId:teamIds){
CenterTeam centerteam = new CenterTeam();
centerteam.setWcId(detail.getId());
centerteam.setTsId(teamId);
teamCenterService.save(centerteam);
}
team= teams.stream()
.map(user -> String.valueOf(user.getTsName()))
.collect(Collectors.joining(","));
// result = teamIds.stream()
// .map(Object::toString) // 或者直接使用String::valueOf,效果相同
// .collect(Collectors.joining(","));
//
// QueryWrapper<TeamSet> queryWrapper = new QueryWrapper<>();
// queryWrapper.in("id",teamIds);
// List<TeamSet> teams = teamService.list(queryWrapper);
//
// team= teams.stream()
// .map(user -> String.valueOf(user.getTsName()))
// .collect(Collectors.joining(","));
}
detail.setTeamId(result);

@ -1,19 +1,25 @@
package org.springblade.desk.basic.feign;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.IBasicClazzService;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.stream.Collectors;
/**
* 作业中心 Feign接口类
*
@ -30,6 +36,8 @@ public class WorkCenterClient implements IWorkCenterClient {
private ITeamSetService service;
@Resource
private IBasicClazzService clazzService;
@Resource
private IRelTeamSetUserService relTeamSetUserService;
@Override
public R<WorkCenter> getById(Long workCenterId) {
WorkCenter workCenter = workCenterService.getById(workCenterId);
@ -38,7 +46,20 @@ public class WorkCenterClient implements IWorkCenterClient {
@Override
public R<TeamSet> getTeamSetById(Long id) {
return R.data(service.getById(id));
TeamSet teamSet =service.getById(id);
QueryWrapper<RelTeamSetUser> qwuser = new QueryWrapper<>();
qwuser.eq("TEAM_SET_ID", id);
List<RelTeamSetUser> users = relTeamSetUserService.list(qwuser);
if(null != users && users.size() > 0){
String userIds = users.stream()
.map(RelTeamSetUser::getUserId)
.map(Object::toString) // 或者直接使用String::valueOf,效果相同
.collect(Collectors.joining(","));
teamSet.setTeamId(userIds);
}
return R.data(teamSet);
}
@Override

@ -0,0 +1,25 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.pojo.entity.CenterTeam;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import java.util.List;
/**
*
*
* @author Tom Shuo
* @since 2025-12-16
*/
public interface CenterTeamMapper extends BaseMapper<CenterTeam> {
}

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.basic.mapper.CenterTeamMapper">
<!-- 通用查询映射结果 -->
<resultMap id="teamSetResultMap" type="org.springblade.desk.basic.pojo.entity.CenterTeam">
</resultMap>
<select id="selectTeamSetPage" resultMap="teamSetResultMap">
SELECT *
FROM BS_CENTER_TEAM
WHERE is_deleted = 0
</select>
<select id="exportTeamSet" resultType="org.springblade.desk.basic.excel.TeamSetExcel">
SELECT *
FROM BS_CENTER_TEAM ${ew.customSqlSegment}
</select>
</mapper>

@ -0,0 +1,26 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.pojo.entity.CenterTeam;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import org.springblade.system.pojo.entity.User;
import java.util.List;
/**
*
*
* @author Tom Shuo
* @since 2025-12-16
*/
public interface ICenterTeamService extends BaseService<CenterTeam> {
}

@ -41,4 +41,11 @@ public interface IUserRightService extends BaseService<UserRight> {
* @param vo
*/
void setVOValue(UserRightVO vo);
/**
* 获取团队id
* @param userId
* @return
*/
List<Long> getTeamId(Long userId);
}

@ -0,0 +1,46 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.excel.TeamSetExcel;
import org.springblade.desk.basic.mapper.CenterTeamMapper;
import org.springblade.desk.basic.mapper.TeamSetMapper;
import org.springblade.desk.basic.pojo.entity.CenterTeam;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import org.springblade.desk.basic.service.ICenterTeamService;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
*
*
* @author Tom Shuo
* @since 2025-12-16
*/
@Service
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class CenterTeamServiceImpl extends BaseServiceImpl<CenterTeamMapper, CenterTeam> implements ICenterTeamService {
}

@ -5,6 +5,8 @@ package org.springblade.desk.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -12,6 +14,7 @@ import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.constant.UserRightConst;
import org.springblade.desk.basic.excel.UserRightExcel;
import org.springblade.desk.basic.mapper.UserRightMapper;
import org.springblade.desk.basic.pojo.entity.UserRight;
@ -66,4 +69,13 @@ public class UserRightServiceImpl extends BaseServiceImpl<UserRightMapper, UserR
}
}
}
@Override
public List<Long> getTeamId(Long userId) {
List<UserRight> bsTeamSet = this.list(Wrappers.lambdaQuery(UserRight.class).eq(UserRight::getUserId, userId).eq(UserRight::getUrType, UserRightConst.UR_TYPE_TEAM_SET));
if (CollectionUtils.isEmpty(bsTeamSet)) {
return null;
}
return bsTeamSet.stream().map(UserRight::getTheId).toList();
}
}

@ -0,0 +1,38 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.basic.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.desk.basic.pojo.entity.CenterTeam;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.vo.CenterTeamVO;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
import java.util.Objects;
/**
* [班组] 包装类,返回视图层所需的字段
*
* @author Tom Shuo
* @since 2025-12-16
*/
public class CenterTeamWrapper extends BaseEntityWrapper<CenterTeam, CenterTeamVO> {
public static CenterTeamWrapper build() {
return new CenterTeamWrapper();
}
@Override
public CenterTeamVO entityVO(CenterTeam teamSet) {
CenterTeamVO VO = Objects.requireNonNull(BeanUtil.copyProperties(teamSet, CenterTeamVO.class));
//User createUser = UserCache.getUser(teamSet.getCreateUser());
//User updateUser = UserCache.getUser(teamSet.getUpdateUser());
//teamSetVO.setCreateUserName(createUser.getName());
//teamSetVO.setUpdateUserName(updateUser.getName());
return VO;
}
}

@ -0,0 +1,28 @@
package org.springblade.desk.dashboard.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.dashboard.service.IDsPartRelationService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.dashboard.service.IDsTaskingService;
import org.springblade.desk.logistics.service.IStorageMonitoringService;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@Hidden()
public class OrderBoxClient implements IOrderBoxClient {
@Resource
private IStorageMonitoringService storageMonitoringService;
@Override
public void monitoringStation() {
storageMonitoringService.monitoringStation();
}
}

@ -67,4 +67,12 @@ public interface IRackSetService extends BaseService<RackSetEntity> {
* @return
*/
Boolean bind(@NotEmpty List<Long> ids, Integer deviceId);
/**
* 根据挂具编号查询挂具信息
*
* @param rsCode
* @return
*/
RackSetEntity getBsRackSetByCode(String rsCode);
}

@ -26,6 +26,7 @@
package org.springblade.desk.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springblade.desk.device.mapper.RackSetMapper;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
@ -91,4 +92,13 @@ public class RackSetServiceImpl extends BaseServiceImpl<RackSetMapper, RackSetEn
return this.updateBatchById(rackSetEntityList);
}
@Override
public RackSetEntity getBsRackSetByCode(String rsCode) {
List<RackSetEntity> rackSets = this.list(Wrappers.lambdaQuery(RackSetEntity.class).eq(RackSetEntity::getRsCode, rsCode));
if (CollectionUtils.isEmpty(rackSets)) {
return null;
}
return rackSets.get(0);
}
}

@ -20,6 +20,7 @@ import org.springblade.desk.logistics.pojo.vo.OrderBindVO;
import org.springblade.desk.logistics.pojo.vo.TaskVO;
import org.springblade.desk.logistics.service.IOrderBindService;
import org.springblade.desk.logistics.service.IOrderBoxService;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springframework.web.bind.annotation.*;
/**
@ -35,6 +36,7 @@ import org.springframework.web.bind.annotation.*;
public class OrderBindController {
private final IOrderBindService iOrderBindService;
private final IOrderBoxService iOrderBoxService;
private final IYieldOrderService iYieldOrderService;
@PostMapping("/box-binding")
@ApiOperationSupport(order = 1)
@ -82,6 +84,15 @@ public class OrderBindController {
return iOrderBindService.getBoxcodelist();
}
@GetMapping("/card-no")
@ApiOperationSupport(order = 5)
@Operation(
summary = "根据流程卡号查询",
description = "根据流程卡号查询"
)
public R getCardNo(String cardNo) throws BusinessException {
return iYieldOrderService.getCardNo(cardNo);
}
}

@ -90,7 +90,7 @@ public class StorageMonitoringServiceImpl implements IStorageMonitoringService {
* - 库位ID/任务/库位信息空值校验跳过异常数据
* - 状态未变化时跳过更新减少数据库IO
*/
@Scheduled(cron = "0 0/5 * * * ?")
// @Scheduled(cron = "0 0/5 * * * ?")
@Override // 实现IStorageMonitoringService接口的抽象方法
public void monitoringStation() {
// ========== 步骤1:查询所有空闲状态的站点 ==========

@ -104,15 +104,14 @@ public class OemOrderController extends BladeController {
IPage<OemApprovalVO> pages = workOrderRunService.queryOemApproval(Condition.getPage(query), approvalQuery);
return R.data(pages);
}
/**
* 审批
* 批量审批
*/
@PostMapping("/approval")
@PostMapping("/batchApproval")
@ApiOperationSupport(order = 4)
@Operation(summary = "审批", description = "")
public R approval(@Valid @RequestBody OemApproval oemApproval) throws Exception {
return workOrderRunService.approval(oemApproval);
@Operation(summary = "批量审批", description = "")
public R batchApproval(@Valid @RequestBody List<OemApproval> oemApprovals) throws Exception {
return workOrderRunService.batchApproval(oemApprovals);
}
/**
@ -121,13 +120,14 @@ public class OemOrderController extends BladeController {
@GetMapping("/prepareOemBatches")
@ApiOperationSupport(order = 5)
@Operation(summary = "外协分批准备数据", description = "worId")
public R<WorkOrderVO> detail(@PathVariable Long worId) {
public R<WorkOrderVO> prepareOemBatches(@Parameter(description = "车间订单运行记录主键ID", required = true) @RequestParam Long worId) {
WorkOrderRun oldWorkOrderRun = workOrderRunService.getById(worId);
WorkOrder oldWorkOrder = workOrderService.getById(oldWorkOrderRun.getWoId());
YieldOrder yieldOrder = yieldOrderService.getById(oldWorkOrder.getYoId());
// 创建新的分批订单对象
WorkOrder newWorkOrder = new WorkOrder();
// 复制原订单基本信息
newWorkOrder.setId(oldWorkOrder.getId());
newWorkOrder.setYoId(oldWorkOrder.getYoId());
newWorkOrder.setWoCode(workOrderService.nextCode(yieldOrder.getYpCode()));
newWorkOrder.setCardNo(workOrderService.nextCardNo(yieldOrder.getYpCode(), oldWorkOrder.getCardNo()));

@ -33,6 +33,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -73,7 +74,31 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
AtomicInteger countError = new AtomicInteger(0);
//1.以外协厂商分组的Map<厂家名称, 待结算工序结算单列表>
Map<String, List<StatementVO>> oemAndStatementMap = statementVOS.stream().collect(Collectors.groupingBy(StatementVO::getOcName));
// 创建CompletableFuture列表
List<CompletableFuture<Void>> futures = new ArrayList<>();
for (Map.Entry<String, List<StatementVO>> listEntry : oemAndStatementMap.entrySet()) {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try {
processOemStatements(listEntry.getKey(), listEntry.getValue(), price, putStoreDate,
countSuccess, countError);
} catch (Exception e) {
log.error(String.format("处理外协厂商{}的结算单时发生异常", listEntry.getKey()), e);
}
});
futures.add(future);
}
// 等待所有任务完成
try {
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
} catch (Exception e) {
log.error("异步处理结算单时发生异常", e);
}
return R.data(Map.of(
"success", countSuccess.get(),
"error", countError.get()
));
/*for (Map.Entry<String, List<StatementVO>> listEntry : oemAndStatementMap.entrySet()) {
//外协厂商下全部需要结算的结算单
List<StatementVO> statementVOList = listEntry.getValue();
@ -81,71 +106,6 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
String oemName = listEntry.getKey();
List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName, putStoreDate);
//假数据测试用
// List<PriceSheetVO> priceSheetAllList = new ArrayList<>();
// PriceSheetVO priceSheet1 = new PriceSheetVO();
// priceSheet1.setPrice("60");
// priceSheet1.setSplyname(oemName);
// priceSheet1.setPrtum("件");
// priceSheet1.setWono("WO-N2510424439-R002");
// priceSheet1.setSeqid("GXJG-20250228018");
// priceSheet1.setGxinfo("玻璃封接电化学抛光");
// priceSheetAllList.add(priceSheet1);
// PriceSheetVO priceSheet2 = new PriceSheetVO();
// priceSheet2.setPrice("26");
// priceSheet2.setSplyname(oemName);
// priceSheet2.setPrtum("件");
// priceSheet2.setSeqid("GXJG-20250228012");
// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet2.setPrtlotno("JI和JHT");
// priceSheet2.setStairflag("单批阶梯价(按单件面积)");
// priceSheet2.setLower("5");
// priceSheet2.setUpper("0");
// priceSheet2.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet2);
// PriceSheetVO priceSheet3 = new PriceSheetVO();
// priceSheet3.setPrice("34");
// priceSheet3.setSplyname(oemName);
// priceSheet3.setPrtum("件");
// priceSheet3.setSeqid("GXJG-20250228012");
// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet3.setPrtlotno("JI和JHT");
// priceSheet3.setStairflag("单批阶梯价(按单件面积)");
// priceSheet3.setLower("10");
// priceSheet3.setUpper("5.00001");
// priceSheet3.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet3);
// PriceSheetVO priceSheet4 = new PriceSheetVO();
// priceSheet4.setPrice("15");
// priceSheet4.setSplyname(oemName);
// priceSheet4.setPrtum("件");
// priceSheet4.setSeqid("GXJG-20250228012");
// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet4.setPrtlotno("JHT");
// priceSheet4.setStairflag("非阶梯价");
// priceSheet4.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet4);
// PriceSheetVO priceSheet5 = new PriceSheetVO();
// priceSheet5.setPrice("99");
// priceSheet5.setSplyname(oemName);
// priceSheet5.setPrtum("件");
// priceSheet5.setSeqid("GXJG-20250228012");
// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet5.setStairflag("非阶梯价");
// priceSheet5.setPrtno("21E6-575-10724-%螺母");
// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)");
// priceSheetAllList.add(priceSheet5);
// PriceSheetVO priceSheet6 = new PriceSheetVO();
// priceSheet6.setPrice("200");
// priceSheet6.setSplyname(oemName);
// priceSheet6.setPrtum("件");
// priceSheet6.setSeqid("GXJG-20250228012");
// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet6.setStairflag("非阶梯价");
// priceSheet6.setPrtno("21E6-575-10724-%螺母");
// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)");
// priceSheetAllList.add(priceSheet6);
if (priceSheetAllList.isEmpty()) {
//【结算异常】
statementVOList.forEach(statementVO -> {
@ -155,43 +115,43 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
} else {
//工序分组Map<工序, 报价列表>
Map<String, List<PriceSheetVO>> priceSheetMap = priceSheetAllList.stream().collect(Collectors.groupingBy(PriceSheetVO::getGxinfo));
/*statementVOList.forEach(statementVO -> {
List<PriceSheetVO> matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap);
if (matchedPriceSheets.isEmpty()) {
return;
}
statementVO.setPriceSheetList(matchedPriceSheets);
});*/
//3.为每个结算单匹配报价集合
statementVOList.forEach(statementVO -> {
List<PriceSheetVO> matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap);
if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) {
return;
}
statementVO.setPriceSheetList(matchedPriceSheets);
//4.匹配规则,过滤出唯一报价
//①.匹配车间订单号
if (ruleWoNo(statementVO, true)) {
return;
}
//②.匹配物料名称和质量等级
if (rulePartNameAndProdIdent(statementVO)) {
return;
}
//③.匹配金价银价
if (ruleGoldAndSilverPrices(statementVO, price)) {
return;
}
//④.涂色标、涂色带、涂箭头
if (ruleColor(statementVO, true)) {
return;
}
//⑤.物料号匹配
if (ruleGoods(statementVO)) {
return;
}
//⑥.阶梯价匹配
if (ruleTieredPricing(statementVO, true)) {
try {
List<PriceSheetVO> matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap);
if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) {
return;
}
statementVO.setPriceSheetList(matchedPriceSheets);
//4.匹配规则,过滤出唯一报价
//①.匹配车间订单号
if (ruleWoNo(statementVO, true)) {
return;
}
//②.匹配物料名称和质量等级
if (rulePartNameAndProdIdent(statementVO)) {
return;
}
//③.匹配金价银价
if (ruleGoldAndSilverPrices(statementVO, price)) {
return;
}
//④.涂色标、涂色带、涂箭头
if (ruleColor(statementVO, true)) {
return;
}
//⑤.物料号匹配
if (ruleGoods(statementVO)) {
return;
}
//⑥.阶梯价匹配
if (ruleTieredPricing(statementVO, true)) {
return;
}
}catch (Exception e){
log.error("结算单处理异常", e);
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo("结算处理异常: " + e.getMessage());
return;
}
});
@ -217,7 +177,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
return R.data(Map.of(
"success", countSuccess,
"error", countError
));
));*/
}
@ -251,76 +211,6 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
String oemName = listEntry.getKey();
List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName);
//假数据测试用
// List<PriceSheetVO> priceSheetAllList = new ArrayList<>();
// PriceSheetVO priceSheet1 = new PriceSheetVO();
// priceSheet1.setPrice("60");
// priceSheet1.setSplyname(oemName);
// priceSheet1.setPrtum("件");
// priceSheet1.setWono("WO-N2510424439-R002");
// priceSheet1.setSeqid("GXJG-20250228018");
// priceSheet1.setGxinfo("玻璃封接电化学抛光");
// priceSheet1.setStartdat("2026-01-15");
// priceSheetAllList.add(priceSheet1);
// PriceSheetVO priceSheet2 = new PriceSheetVO();
// priceSheet2.setPrice("26");
// priceSheet2.setSplyname(oemName);
// priceSheet2.setPrtum("件");
// priceSheet2.setSeqid("GXJG-20250228012");
// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet2.setPrtlotno("JI和JHT");
// priceSheet2.setStairflag("单批阶梯价(按单件面积)");
// priceSheet2.setLower("5");
// priceSheet2.setUpper("0");
// priceSheet2.setPrtno("21E6-575-10724-%螺母");
// priceSheet2.setStartdat("2026-01-15");
// priceSheetAllList.add(priceSheet2);
// PriceSheetVO priceSheet3 = new PriceSheetVO();
// priceSheet3.setPrice("34");
// priceSheet3.setSplyname(oemName);
// priceSheet3.setPrtum("件");
// priceSheet3.setSeqid("GXJG-20250228012");
// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet3.setPrtlotno("JI和JHT");
// priceSheet3.setStairflag("单批阶梯价(按单件面积)");
// priceSheet3.setLower("10");
// priceSheet3.setUpper("5.00001");
// priceSheet3.setPrtno("21E6-575-10724-%螺母");
// priceSheet3.setStartdat("2026-01-15");
// priceSheetAllList.add(priceSheet3);
// PriceSheetVO priceSheet4 = new PriceSheetVO();
// priceSheet4.setPrice("15");
// priceSheet4.setSplyname(oemName);
// priceSheet4.setPrtum("件");
// priceSheet4.setSeqid("GXJG-20250228012");
// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet4.setPrtlotno("JHT");
// priceSheet4.setStairflag("非阶梯价");
// priceSheet4.setPrtno("21E6-575-10724-%螺母");
// priceSheet4.setStartdat("2026-01-15");
// priceSheetAllList.add(priceSheet4);
// PriceSheetVO priceSheet5 = new PriceSheetVO();
// priceSheet5.setPrice("99");
// priceSheet5.setSplyname(oemName);
// priceSheet5.setPrtum("件");
// priceSheet5.setSeqid("GXJG-20250228012");
// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet5.setStairflag("非阶梯价");
// priceSheet5.setPrtno("21E6-575-10724-%螺母");
// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)");
// priceSheet5.setStartdat("2026-01-15");
// priceSheetAllList.add(priceSheet5);
// PriceSheetVO priceSheet6 = new PriceSheetVO();
// priceSheet6.setPrice("200");
// priceSheet6.setSplyname(oemName);
// priceSheet6.setPrtum("件");
// priceSheet6.setSeqid("GXJG-20250228012");
// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet6.setStairflag("非阶梯价");
// priceSheet6.setPrtno("21E6-575-10724-%螺母");
// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)");
// priceSheet6.setStartdat("2026-01-16");
// priceSheetAllList.add(priceSheet6);
if (priceSheetAllList.isEmpty()) {
//【结算异常】
statementVOList.forEach(statementVO -> {
@ -345,40 +235,202 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
));
//3.为每个结算单匹配报价集合
statementVOList.forEach(statementVO -> {
try {
List<PriceSheetVO> matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap);
if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) {
return;
}
statementVO.setPriceSheetList(matchedPriceSheets);
//4.匹配规则,过滤出唯一报价
//①.匹配车间订单号
if (ruleWoNo(statementVO, false)) {
return;
}
//②.匹配物料名称和质量等级
if (rulePartNameAndProdIdent(statementVO)) {
return;
}
//③.匹配金价银价
if (ruleGoldAndSilverPrices(statementVO, price)) {
return;
}
//④.涂色标、涂色带、涂箭头
if (ruleColor(statementVO, false)) {
return;
}
//⑤.物料号匹配
if (ruleGoods(statementVO)) {
return;
}
//⑥.阶梯价匹配
if (ruleTieredPricing(statementVO, false)) {
return;
}
} catch (Exception e) {
log.error("结算单处理异常", e);
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo("结算处理异常: " + e.getMessage());
return;
}
});
}
}
return statementVOS;
}
/**
* 以外协厂商分组结算
*
* @param oemName
* @param statementVOList
* @param price
* @param putStoreDate
* @param countSuccess
* @param countError
*/
private void processOemStatements(String oemName, List<StatementVO> statementVOList,
BigDecimal price, LocalDate putStoreDate,
AtomicInteger countSuccess, AtomicInteger countError) {
// 1. 查询报价单
List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName, putStoreDate);
//假数据测试用
// List<PriceSheetVO> priceSheetAllList = new ArrayList<>();
// PriceSheetVO priceSheet1 = new PriceSheetVO();
// priceSheet1.setPrice("60");
// priceSheet1.setSplyname(oemName);
// priceSheet1.setPrtum("件");
// priceSheet1.setWono("WO-N2510424439-R002");
// priceSheet1.setSeqid("GXJG-20250228018");
// priceSheet1.setGxinfo("玻璃封接电化学抛光");
// priceSheetAllList.add(priceSheet1);
// PriceSheetVO priceSheet2 = new PriceSheetVO();
// priceSheet2.setPrice("26");
// priceSheet2.setSplyname(oemName);
// priceSheet2.setPrtum("件");
// priceSheet2.setSeqid("GXJG-20250228012");
// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet2.setPrtlotno("JI和JHT");
// priceSheet2.setStairflag("单批阶梯价(按单件面积)");
// priceSheet2.setLower("5");
// priceSheet2.setUpper("0");
// priceSheet2.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet2);
// PriceSheetVO priceSheet3 = new PriceSheetVO();
// priceSheet3.setPrice("34");
// priceSheet3.setSplyname(oemName);
// priceSheet3.setPrtum("件");
// priceSheet3.setSeqid("GXJG-20250228012");
// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet3.setPrtlotno("JI和JHT");
// priceSheet3.setStairflag("单批阶梯价(按单件面积)");
// priceSheet3.setLower("10");
// priceSheet3.setUpper("5.00001");
// priceSheet3.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet3);
// PriceSheetVO priceSheet4 = new PriceSheetVO();
// priceSheet4.setPrice("15");
// priceSheet4.setSplyname(oemName);
// priceSheet4.setPrtum("件");
// priceSheet4.setSeqid("GXJG-20250228012");
// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet4.setPrtlotno("JHT");
// priceSheet4.setStairflag("非阶梯价");
// priceSheet4.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet4);
// PriceSheetVO priceSheet5 = new PriceSheetVO();
// priceSheet5.setPrice("99");
// priceSheet5.setSplyname(oemName);
// priceSheet5.setPrtum("件");
// priceSheet5.setSeqid("GXJG-20250228012");
// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet5.setStairflag("非阶梯价");
// priceSheet5.setPrtno("21E6-575-10724-%螺母");
// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)");
// priceSheetAllList.add(priceSheet5);
// PriceSheetVO priceSheet6 = new PriceSheetVO();
// priceSheet6.setPrice("200");
// priceSheet6.setSplyname(oemName);
// priceSheet6.setPrtum("件");
// priceSheet6.setSeqid("GXJG-20250228012");
// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet6.setStairflag("非阶梯价");
// priceSheet6.setPrtno("21E6-575-10724-%螺母");
// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)");
// priceSheetAllList.add(priceSheet6);
if (priceSheetAllList.isEmpty()) {
// 【结算异常】
statementVOList.forEach(statementVO -> {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName));
});
} else {
// 2. 工序分组Map<工序, 报价列表>
Map<String, List<PriceSheetVO>> priceSheetMap = priceSheetAllList.stream()
.collect(Collectors.groupingBy(PriceSheetVO::getGxinfo));
// 3. 为每个结算单匹配报价集合
statementVOList.forEach(statementVO -> {
try {
List<PriceSheetVO> matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap);
if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) {
return;
}
statementVO.setPriceSheetList(matchedPriceSheets);
//4.匹配规则,过滤出唯一报价
//①.匹配车间订单号
if (ruleWoNo(statementVO, false)) {
// 4. 匹配规则,过滤出唯一报价
// ①. 匹配车间订单号
if (ruleWoNo(statementVO, true)) {
return;
}
//②.匹配物料名称和质量等级
// ②. 匹配物料名称和质量等级
if (rulePartNameAndProdIdent(statementVO)) {
return;
}
//③.匹配金价银价
// ③. 匹配金价银价
if (ruleGoldAndSilverPrices(statementVO, price)) {
return;
}
//④.涂色标、涂色带、涂箭头
if (ruleColor(statementVO, false)) {
// ④. 涂色标、涂色带、涂箭头
if (ruleColor(statementVO, true)) {
return;
}
//⑤.物料号匹配
// ⑤. 物料号匹配
if (ruleGoods(statementVO)) {
return;
}
//⑥.阶梯价匹配
if (ruleTieredPricing(statementVO, false)) {
// ⑥. 阶梯价匹配
if (ruleTieredPricing(statementVO, true)) {
return;
}
});
}
} catch (Exception e) {
log.error("结算单处理异常", e);
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo("结算处理异常: " + e.getMessage());
}
});
}
// 5. 批量保存
List<OemStatementEntity> saves = statementVOList.stream()
.map(statementVO -> {
// 统计数量
if (Objects.equals(OemStatementEntity.IN_SETTLEMENT, statementVO.getRosStatus())) {
countSuccess.incrementAndGet();
} else if (Objects.equals(OemStatementEntity.ERR_SETTLEMENT, statementVO.getRosStatus())) {
countError.incrementAndGet();
}
OemStatementEntity entity = new OemStatementEntity();
BeanUtils.copyProperties(statementVO, entity);
entity.setUpdateTime(new Date());
entity.setIsDeleted(0);
return entity;
})
.collect(Collectors.toList());
// 批量插入或更新
if (!saves.isEmpty()) {
baseMapper.insertOrUpdate(saves);
}
return statementVOS;
}
@Override
@ -468,17 +520,22 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
* 获取报价单列表
*/
private List<PriceSheetVO> getPriceSheets(String oemName, LocalDate putStoreDate) {
PriceSheetQuery query = new PriceSheetQuery();
query.setOcName(oemName);
query.setInDateStart(putStoreDate);
query.setInDateEnd(putStoreDate);
try {
PriceSheetQuery query = new PriceSheetQuery();
query.setOcName(oemName);
query.setInDateStart(putStoreDate);
query.setInDateEnd(putStoreDate);
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{
setSize(99999);
}});
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{
setSize(99999);
}});
if (pageR != null && pageR.getData() != null) {
return pageR.getData().getRecords();
if (pageR != null && pageR.getData() != null) {
return pageR.getData().getRecords();
}
} catch (Exception e) {
log.error("获取报价单失败,失败原因:{}", e);
return Collections.emptyList();
}
return Collections.emptyList();
}

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.validation.constraints.NotEmpty;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldPlan;
@ -225,7 +226,10 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
*/
String getNewCardNo(String cardNo);
Long getWcId(Long orderId);
Long getWcId(Long orderId);
R getCardNo(String cardNo);
/**
* 下达玻璃饼生产订单

@ -16,6 +16,7 @@ import org.springblade.common.utils.StringPrefixUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil;
@ -753,6 +754,19 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
po.getYpCode(), po.getYpQty(), dsPartSub.getPartCode(), dsPartSub.getQuota());
}
@Override
public R getCardNo(String cardNo) {
if (cardNo.isEmpty()) {
return R.fail("路线卡号不能为空");
}
List<YieldOrder> list = list(new LambdaQueryWrapper<YieldOrder>().eq(YieldOrder::getCardNo, cardNo));
if (list==null||list.size()==0) {
return R.fail("路线卡号未查询到详情");
}
return R.data(list.get(0));
}
/**
* 验证零件子件信息
*

@ -11,6 +11,7 @@ import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.pojo.vo.RackSetVO;
import org.springblade.desk.device.wrapper.RackSetWrapper;
import org.springblade.desk.produce.pojo.dto.TurnTypeDTO;
import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO;
import org.springblade.desk.produce.service.IPdaLoadService;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springframework.web.bind.annotation.*;
@ -30,18 +31,21 @@ import org.springframework.web.bind.annotation.*;
public class PdaLoadController {
private final IPdaLoadService pdaLoadService;
@GetMapping(value = "/loadBindData/{cardNo}")
@ApiOperationSupport(order = 1)
@Operation(summary = "加载绑定需要的流程卡数据", description = "传入cardNo")
public R loadBindData(@PathVariable String cardNo) {
return R.data(pdaLoadService.loadBindData(AuthUtil.getUser(), cardNo));
return R.data(pdaLoadService.loadBindData(AuthUtil.getUserId(), cardNo));
}
@GetMapping(value = "getBsFeiBaSetByCode/{rsCode}")
@ApiOperationSupport(order = 2)
@Operation(summary = "根据挂具编码查询数据", description = "传入rsCode")
public R getBsFeiBaSetByCode(@PathVariable String rsCode) {
return R.data(pdaLoadService.getBsRackSetByCode(rsCode));
}
@GetMapping(value = "/getBsFeiBaSetByCodeUn/{fsCode}")
@ApiOperationSupport(order = 3)
@Operation(summary = "根据挂具编码查询数据(解绑)", description = "传入fsCode")
@ -55,16 +59,18 @@ public class PdaLoadController {
public R getEcByDeviceCode(@PathVariable String deviceCode) {
return R.data(pdaLoadService.getEcByCode(deviceCode));
}
@GetMapping(value = "/loadSubOrder/{cardNo}")
@ApiOperationSupport(order = 5)
@Operation(summary = "加载子件订单入库数据", description = "传入cardNo")
public R loadSubOrder(@PathVariable String cardNo) {
return R.data(pdaLoadService.loadSubOrder(cardNo));
}
@GetMapping(value = "/loadProTest/{cardNo}")
@ApiOperationSupport(order = 6)
@Operation(summary = "加载当前工序检验数据", description = "传入cardNo")
public R loadProTest(@PathVariable String cardNo) {
public R<PdaProRelevantVO> loadProTest(@PathVariable String cardNo) {
return R.data(pdaLoadService.loadProTestWorkPlan(cardNo));
}
@ -74,6 +80,7 @@ public class PdaLoadController {
public R loadPrMacToolUseByMtnCode(@PathVariable String mtnCode) {
return R.data(pdaLoadService.loadPrMacToolUseByMtnCode(mtnCode));
}
@GetMapping(value = "/deletedProduceRun/{mtnCode}")
@ApiOperationSupport(order = 8)
@Operation(summary = "根据同槽号删除信息", description = "传入mtnCode")

@ -32,84 +32,94 @@ public class PdaSaveController {
private final IPdaSaveService pdaSaveService;
private final IBasicClazzService basicClazzService;
@Operation(summary = "流程卡与挂具绑定")
@PostMapping("/gjBindingCrad")
public R gjBindingCrad(@RequestParam(value = "rsId") Long rsId,@RequestParam(value = "planListIds") String planListIds) {
public R gjBindingCrad(@RequestParam(value = "rsId") Long rsId, @RequestParam(value = "planListIds") String planListIds) {
pdaSaveService.bindingCard(rsId, null, null, planListIds);
return R.success() ;
return R.success();
}
@Operation(summary = "挂具与飞靶绑定")
@PostMapping("/gjBindingFb")
public R gjBindingFb(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "rsListIds") String rsListIds) {
pdaSaveService.binding(fsId, null, null,null, rsListIds);
return R.success() ;
public R gjBindingFb(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "rsListIds") String rsListIds) {
pdaSaveService.binding(fsId, null, null, null, rsListIds);
return R.success();
}
@Operation(summary = "飞靶与设备绑定")
@PostMapping("/fbBindingEc")
public R fbBindingEc(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "ecId") Long ecId,
@RequestParam(value = "hangNum") Long hangNum,@RequestParam(value = "unFsBool") Boolean unFsBool) {
public R fbBindingEc(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "ecId") Long ecId,
@RequestParam(value = "hangNum") Long hangNum, @RequestParam(value = "unFsBool") Boolean unFsBool) {
String hangNumName = "";
BasicClazz bsBasicClass = null;
if(hangNum != null&&hangNum != -1){
if (hangNum != null && hangNum != -1) {
bsBasicClass = basicClazzService.getById(hangNum);
if(bsBasicClass != null){
if (bsBasicClass != null) {
hangNumName = bsBasicClass.getName();
}
}else if(hangNum == -1){
} else if (hangNum == -1) {
hangNumName = "-1";
}
pdaSaveService.binding(fsId, ecId, unFsBool, hangNumName,null);
pdaSaveService.binding(fsId, ecId, unFsBool, hangNumName, null);
// 删除产线设备对应的挂次号之前的数据
if(bsBasicClass!= null){
if (bsBasicClass != null) {
LambdaUpdateWrapper<BasicClazz> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(BasicClazz::getCode,bsBasicClass.getCode());
wrapper.eq(BasicClazz::getBizType,"6");
wrapper.lt(BasicClazz::getUpdateTime,bsBasicClass.getUpdateTime());
wrapper.set(BasicClazz::getIsDeleted,1);
wrapper.eq(BasicClazz::getCode, bsBasicClass.getCode());
wrapper.eq(BasicClazz::getBizType, "6");
wrapper.lt(BasicClazz::getUpdateTime, bsBasicClass.getUpdateTime());
wrapper.set(BasicClazz::getIsDeleted, 1);
basicClazzService.update(null, wrapper);
}
return R.success() ;
return R.success();
}
@Operation(summary = "流程卡与飞靶绑定")
@PostMapping("/fbBindingCrad")
public R fbBindingCrad(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "planListIds") String planListIds) {
public R fbBindingCrad(@RequestParam(value = "fsId") Long fsId, @RequestParam(value = "planListIds") String planListIds) {
pdaSaveService.bindingCard(null, fsId, null, planListIds);
return R.success() ;
return R.success();
}
@Operation(summary = "流程卡与设备绑定")
@PostMapping("/ecBindingCrad")
public R ecBindingCrad(@RequestParam(value = "ecId") Long ecId,@RequestParam(value = "planListIds") String planListIds) {
public R ecBindingCrad(@RequestParam(value = "ecId") Long ecId, @RequestParam(value = "planListIds") String planListIds) {
pdaSaveService.bindingCard(null, null, ecId, planListIds);
return R.success() ;
return R.success();
}
@Operation(summary = "挂具与设备绑定")
@PostMapping("/gjBindingEc")
public R gjBindingEc(@RequestParam(value = "ecId") Long ecId,@RequestParam(value = "rsListIds") String rsListIds) {
pdaSaveService.binding(null, ecId, null,null, rsListIds);
return R.success() ;
public R gjBindingEc(@RequestParam(value = "ecId") Long ecId, @RequestParam(value = "rsListIds") String rsListIds) {
pdaSaveService.binding(null, ecId, null, null, rsListIds);
return R.success();
}
@Operation(summary = "烧结流程卡与设备绑定")
@PostMapping("/sjEcBindingCard")
public R sjEcBindingCard(@RequestBody SjEcBingCardVo sjEcBingCardVo) {
pdaSaveService.sjBindingCard(sjEcBingCardVo);
return R.success() ;
return R.success();
}
@Operation(summary = "解绑")
@PostMapping("/unBind")
public R unBind(@RequestBody UnBingVo unBingVo) {
pdaSaveService.unBind(unBingVo);
return R.success() ;
return R.success();
}
@Operation(summary = "获取烧结未解绑的绑定记录")
@PostMapping("/getUnbindByCard")
public R getUnbindByCard(@RequestParam(value = "cardNo") String cardNo) {
return R.data(pdaSaveService.getUnbindByCard(cardNo)) ;
return R.data(pdaSaveService.getUnbindByCard(cardNo));
}
@Operation(summary = "烧结设备解绑解绑")
@PostMapping("/sjDeviceUnBind")
public R sjDeviceUnBind(@RequestBody UnBingDeviceVo unBingDeviceVo) {
pdaSaveService.sjDeviceUnBind(unBingDeviceVo);
return R.success() ;
return R.success();
}

@ -58,7 +58,7 @@
LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID
LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID
<where>
mr.IS_DELETED = 0 and a.worker = #{mesMakeRec.worker}
mr.IS_DELETED = 0 and mr.worker = #{mesMakeRec.worker}
<if test="mesMakeRec.woCode != null and mesMakeRec.woCode != ''">
AND wo.WO_CODE LIKE concat(concat('%', #{mesMakeRec.worker}),'%')
</if>

@ -43,5 +43,6 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
List<ProduceMonitorSlotListVO> listSlotInfoGr (Long wpId, Boolean aTrue);
List<ProduceMonitorSlotListVO> listSlotInfo (Long wpId,Boolean aTrue);
List<MacToolUse> listMacToolUse(Long wpId,Boolean aTrue);
}

@ -24,11 +24,11 @@ public interface IPdaLoadService extends BaseService<WorkPlan> {
* <p>方法名: loadBindData </p>
* <p>方法描述: 加载绑定数据 </p>
*
* @param user 用户
* @param userId 用户id
* @param cardNo 卡号
* @return org.springblade.desk.produce.pojo.entity.WorkPlan
*/
WorkPlan loadBindData(BladeUser user, String cardNo);
WorkPlan loadBindData(Long userId, String cardNo);
/**
* <p>方法名: getBsRackSetByCode </p>
* <p>方法描述: 根据挂具编码查询数据 </p>
@ -62,7 +62,7 @@ public interface IPdaLoadService extends BaseService<WorkPlan> {
void deletedProduceRun(String mtnCode);
public WorkOrder checkPrWorkOrder(String cardNo);
WorkOrder checkPrWorkOrder(String cardNo);
void handleBaoZhuangWorkPlan(List<WorkPlan> wpList, YieldOrder yo);

@ -34,7 +34,6 @@ public interface IPdaSaveService extends BaseService<WorkPlan> {
* @param ecId 设备id
* @param unFsBool 是否解绑
* @param rsListIds 绑定数据
* @param listIds
*/
void binding(Long rsId, Long ecId, Boolean unFsBool,String hangNum,String rsListIds);
/**

@ -10,6 +10,7 @@ import org.springblade.desk.oem.pojo.vo.OemApprovalVO;
import org.springblade.desk.oem.pojo.vo.OemOrderVO;
import org.springblade.desk.produce.pojo.entity.WorkOrderRun;
import java.util.List;
import java.util.Map;
/**
@ -48,10 +49,10 @@ public interface IWorkOrderRunService extends BaseService<WorkOrderRun> {
/**
* 外协审批
*
* @param oemApproval
* @param oemApprovals
* @return
*/
R approval(OemApproval oemApproval) throws Exception;
R batchApproval(List<OemApproval> oemApprovals) throws Exception;
/**
* 转外协厂家

@ -128,14 +128,6 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
}
}
private List<Long> getTeamId(Long userId) {
List<UserRight> bsTeamSet = userRightService.list(Wrappers.lambdaQuery(UserRight.class).eq(UserRight::getUserId, userId).eq(UserRight::getUrType, "bs_team_set"));
if (CollectionUtils.isEmpty(bsTeamSet)) {
return null;
}
return bsTeamSet.stream().map(UserRight::getTheId).toList();
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveMakeRec(MakeRecDTO makeRecDTO) {
@ -432,8 +424,11 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
@Override
public IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec) {
IPage<MesMakeRecVO> mesMakeRecVOIPage = page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec));
List<MesMakeRecVO> records = mesMakeRecVOIPage.getRecords();
if (mesMakeRec.getWorker() == null) {
mesMakeRec.setWorker(AuthUtil.getUserId());
}
IPage<MesMakeRecVO> mesMakeRecVoiPage = page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec));
List<MesMakeRecVO> records = mesMakeRecVoiPage.getRecords();
if (CollectionUtils.isNotEmpty(records)) {
List<Long> ppsIds = new ArrayList<>();
List<Long> makeTeams = new ArrayList<>();
@ -470,9 +465,9 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
record.setNextPpsName(processSetMap.get(record.getNextPpsId()));
record.setNextMakeTeamName(teamMap.get(record.getNextMakeTeam()));
}
mesMakeRecVOIPage.setRecords(records);
mesMakeRecVoiPage.setRecords(records);
}
return mesMakeRecVOIPage;
return mesMakeRecVoiPage;
}
@Override

@ -15,7 +15,11 @@ import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.basic.mapper.CraftAbilityMapper;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.IUserRightService;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
@ -101,16 +105,23 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final WorkPlanMapper workPlanMapper;
private final IWorkPlanService workPlanService;
private final IUserRightService userRightService;
@Override
public WorkPlan loadBindData(BladeUser user, String cardNo) {
WorkPlan prWorkPlan = this.getCurrentWorkPlan(cardNo, user, false, false);
public WorkPlan loadBindData(Long userId, String cardNo) {
WorkPlan prWorkPlan = this.getCurrentWorkPlan(cardNo, userId, false, false);
return prWorkPlan;
}
@Override
public RackSetEntity getBsRackSetByCode(String rsCode) {
return rackSetService.getOne(Wrappers.lambdaQuery(RackSetEntity.class)
.eq(RackSetEntity::getRsCode, rsCode));
RackSetEntity rackSet = rackSetService.getBsRackSetByCode(rsCode);
if (rackSet == null) {
throw new ServiceException("此挂具不存在!");
}
return rackSet;
}
@Override
@ -172,7 +183,7 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
.woCode(prWorkOrder.getWoCode())
.batchNo(prWorkOrder.getBatchNo())
.partCode(prWorkOrder.getPartCode())
.partName(part.getPartName())
.partName(part != null ? part.getPartName() : null)
.frontOrders(frontWorkPlan.getOrders())
.frontPpsName(processSetMap.get(frontWorkPlan.getPpsId()).getName())
.wpId(prWorkPlan.getId())
@ -206,42 +217,36 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
}
private WorkPlan getCurrentWorkPlan(String cardNo, BladeUser user, boolean checkCurrentProcess, boolean checkAfterPlating) {
private WorkPlan getCurrentWorkPlan(String cardNo, Long userId, boolean checkCurrentProcess, boolean checkAfterPlating) {
//获取并验证车间订单
WorkOrder prWorkOrder = this.checkPrWorkOrder(cardNo);
//获取当前登录人班组
List<Long> tsIds = relTeamSetUserService.
list(Wrappers.lambdaQuery(RelTeamSetUser.class)
.eq(RelTeamSetUser::getUserId, user.getUserId()))
.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList());
List<Long> tsIds = userRightService.getTeamId(userId);
//获取作业计划
WorkPlan prWorkPlan = this.getOne(Wrappers.lambdaQuery(WorkPlan.class)
.eq(WorkPlan::getId, prWorkOrder.getWpId()));
WorkPlan workPlan = workPlanService.getById(prWorkOrder.getWpId());
//获取当前工序的下序
WorkPlan nextPrWorkPlan = this.getOne(Wrappers.lambdaQuery(WorkPlan.class)
.eq(WorkPlan::getId, prWorkPlan.getNextWpId()));
WorkPlan nextPrWorkPlan = workPlanService.getById(workPlan.getNextWpId());
//获取当前工序的上序
WorkPlan frontPrWorkPlan = this.getOne(Wrappers.lambdaQuery(WorkPlan.class)
.eq(WorkPlan::getId, prWorkPlan.getFrontWpId()));
WorkPlan frontPrWorkPlan = workPlanService.getById(workPlan.getFrontWpId());
//如果是最后一道工序(当前序下序为空或者下序的下序为空)
if (nextPrWorkPlan == null || nextPrWorkPlan.getNextWpId() == null) {
//如果是镀后入库则不验证
if (checkAfterPlating) {
throw new ServiceException("pda.nextWorkPlan.noNext");
throw new ServiceException("工序已是最后一道!");
}
}
//验证作业中心
//this.checkWorkCenter(checkCurrentProcess, frontPrWorkPlan, prWorkPlan, nextPrWorkPlan, tsIds, checkAfterPlating);
this.checkWorkCenter(checkCurrentProcess, frontPrWorkPlan, workPlan, nextPrWorkPlan, tsIds, checkAfterPlating);
//状态是false或者上序为空,并且当前序(首道)状态未未开工时,获取当前序;
if (!checkCurrentProcess || (frontPrWorkPlan == null && prWorkPlan.getStatus().equals(WorkPlan.STATUS_NO_START))) {
return prWorkPlan;
if (!checkCurrentProcess || (frontPrWorkPlan == null && workPlan.getStatus().equals(WorkPlan.STATUS_NO_START))) {
return workPlan;
}
//如果是镀后入库则不验证
if (checkAfterPlating) {
if (prWorkPlan != null) {
if (workPlan != null) {
//验证上道工序是否报工完成
if (!WorkPlan.STATUS_WORK_OK.equals(prWorkPlan.getStatus())) {
throw new ServiceException("product.frontWpNotWork");
if (!WorkPlan.STATUS_WORK_OK.equals(workPlan.getStatus())) {
throw new ServiceException("上序未报工完成,请联系相关人员处理!");
}
}
}
@ -249,9 +254,47 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
private void checkWorkCenter(boolean checkCurrentProcess, WorkPlan frontPrWorkPlan, WorkPlan prWorkPlan, WorkPlan nextPrWorkPlan, List<Long> tsIds, boolean checkAfterPlating) {
// todo 等待关联表开发完成
// WorkCenter bsWorkCenter = null;
// BsTeamSetEntity teamSet;
// if (!checkCurrentProcess || (frontPrWorkPlan == null && prWorkPlan.getStatus().equals(WorkPlan.STATUS_NO_START)) || nextPrWorkPlan == null) {
// if (prWorkPlan.getMakeTeam() == null) {
// throw new ServiceException("当前工序无加工班组");
// }
//
// // 根据当前工序班组查询作业中心
// teamSet = bsTeamSetService.getById(prWorkPlan.getMakeTeam());
// if (teamSet != null) {
// bsWorkCenter = centerTeam.getBsWorkCenter();
// }
// // 验证当前登录人和当前工序的班组是否一致
// this.checkMakeTeamOne(prWorkPlan, tsIds);
// if (checkAfterPlating) {
// prWorkPlanService.verifyMakeUnit(prWorkPlan);
// }
// } else {
//
// if (nextPrWorkPlan.getMakeTeam() == null) {
// throw new ServiceException("当前工序无加工班组");
// }
//
// // 根据当前工序班组查询作业中心
// centerTeam = bsCenterTeamService.getByTsId(nextPrWorkPlan.getMakeTeam().getTsId());
// if (centerTeam != null) {
// bsWorkCenter = centerTeam.getBsWorkCenter();
// }
// //验证当前登录人和当前工序的班组是否一致
// this.checkMakeTeamOne(nextPrWorkPlan, tsIds);
// if (checkAfterPlating) {
// prWorkPlanService.verifyMakeUnit(nextPrWorkPlan);
// }
// }
// if (bsWorkCenter == null) {
// throw new ServiceException("当前工序无作业中心!");
// }
}
@Override
public WorkOrder checkPrWorkOrder(String cardNo) {
WorkOrder prWorkOrder = this.checkWo(cardNo);
//车间订单状态小于已下达并且大于加工中的情况下,不允许下序接收
@ -307,10 +350,10 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
private WorkOrder checkWo(String cardNo) {
WorkOrder prWorkOrder = workOrderService.getOne(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getCardNo, cardNo));
if (prWorkOrder == null) {
throw new ServiceException("pda.prWorkOrder.absent" + null);
WorkOrder workOrder = workOrderService.getWorkOrderByCardNo(cardNo);
if (workOrder == null) {
throw new ServiceException("车间订单不存在!");
}
return prWorkOrder;
return workOrder;
}
}

@ -99,20 +99,20 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
@Override
public void bindingCard(Long rsId, Long fsId, Long ecId, String planListIds) {
RackSetEntity rackSet = rackSetService.getById(rsId);
RackSetEntity rackSet = rackSetService.getById(rsId);
//BsFeiBaSet bsFeiBaSet = this.getFeiBaSetByFsId(fsId);
//DeEquipmentCard equipmentCard = this.getEquipmentCardByEcId(ecId);
//同槽号
String code = null;
//rsId挂具绑定流程卡,fsId飞靶绑定流程卡
if(rsId!=null){
if (rsId != null) {
List<MacToolUse> macToolUseList = macToolUseService.list(Wrappers.<MacToolUse>query().lambda()
.eq(MacToolUse::getBsRackSet, rsId)
.eq(MacToolUse::getFinished, false)
.eq(MacToolUse::getIsDeleted, 0).orderByDesc(MacToolUse::getMtnCode)
);
if(macToolUseList.size()>0){
if (macToolUseList.size() > 0) {
code = macToolUseList.get(0).getMtnCode();
}
//如果未找到满足条件的同槽号
@ -128,7 +128,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
MacToolUse mtu = null;
//绑定日期
Date nowDate = new Date();
String [] str= planListIds.split(",");
String[] str = planListIds.split(",");
for (int i = 0; i < str.length; i++) {
Long planId = Long.parseLong(str[i]);
prWorkPlan = this.getById(planId);
@ -152,11 +152,11 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
@Override
public void binding(Long fsId, Long ecId, Boolean unFsBool,String hangNum, String rsListIds) {
public void binding(Long fsId, Long ecId, Boolean unFsBool, String hangNum, String rsListIds) {
//获取同槽号
String code = null;
Date nowDate = new Date();
FeiBaSetEntity frackSet = feiBaSetService.getById(fsId);
FeiBaSetEntity frackSet = feiBaSetService.getById(fsId);
//挂具集合不为空,则代表是挂具相关绑定,反之则是飞靶绑定设备
if (rsListIds != null) {
if (fsId != null) {
@ -165,7 +165,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
.eq(MacToolUse::getFinished, false)
.eq(MacToolUse::getIsDeleted, 0).orderByDesc(MacToolUse::getMtnCode)
);
if(macToolUseList.size()>0){
if (macToolUseList.size() > 0) {
code = macToolUseList.get(0).getMtnCode();
}
//修改飞靶状态
@ -174,15 +174,15 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
if (StringUtils.isBlank(code)) {
code = macToolUseService.nextCode(0);
}
}else {
} else {
//如果未找到满足条件的同槽号,则自动生成一个同槽号(设备)
if (StringUtils.isBlank(code)) {
code = macToolUseService.nextCode(2);
}
}
//挂具
RackSetEntity rackSet = null;
String [] str= rsListIds.split(",");
RackSetEntity rackSet = null;
String[] str = rsListIds.split(",");
for (int i = 0; i < str.length; i++) {
Long rsId = Long.parseLong(str[i]);
rackSet = rackSetService.getById(rsId);
@ -204,13 +204,13 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
this.setBsAdditionalMess(code);
}
}else {
} else {
List<MacToolUse> macToolUseList = macToolUseService.list(Wrappers.<MacToolUse>query().lambda()
.eq(MacToolUse::getBsFeiBaSet, frackSet.getId())
.eq(MacToolUse::getIsDeleted, 0)
);
//未标记解绑飞靶,则代表正常绑定
if (unFsBool == null){
if (unFsBool == null) {
//获取以设备为基准的同槽号
code = macToolUseService.nextCode(2);
//开始绑定
@ -252,7 +252,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
workPlan = baseMapper.selectById(id);
mtu = new MacToolUse();
mtu.setWpId( id);
mtu.setWpId(id);
mtu.setBindType("sj");
// "玻璃饼排蜡玻化(箱式炉)".equals(ppsName) ||
if ("配胶".equals(sjEcBingCardVo.getOperate()) || "玻璃饼压制".equals(sjEcBingCardVo.getPpsName()) || "振光".equals(sjEcBingCardVo.getOperate()) || "玻璃饼印字".equals(sjEcBingCardVo.getPpsName())
@ -376,7 +376,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
baseMapper.updateById(prWorkPlan);
List<MesQcProduceRunEntity> qcProduceRuns = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery().
eq(MesQcProduceRunEntity::getMtnCode,prMacToolUse.getMtnCode()));
eq(MesQcProduceRunEntity::getMtnCode, prMacToolUse.getMtnCode()));
if (qcProduceRuns == null || qcProduceRuns.size() == 0) {
continue;
@ -398,7 +398,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
// 获取设备所需参数
// 如果没有填写退火温度
if (StringUtils.isBlank(unBingDeviceVo.getTempSlot())) {
// macToolUseService.setSjDataCapture(qcProduceRun, Boolean.TRUE); //todo
// macToolUseService.setSjDataCapture(qcProduceRun, Boolean.TRUE); //todo
}
}
}
@ -422,10 +422,10 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
if (rpList == null && rpList.size() == 0) {
//修改erp返工单工艺状态为无工艺
//prReworkProcessDao.receiveOrder(rr, user.getLdapName(), 0);
}else {
} else {
//查询原订单
// WorkOrder wo = prWorkOrderService.getWorkOrderUniqueRec(rr.getPrtno(), rr.getSplcode(), rr.getSono());
WorkOrder wo =workOrderService.getOne(Wrappers.<WorkOrder>lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
// WorkOrder wo = prWorkOrderService.getWorkOrderUniqueRec(rr.getPrtno(), rr.getSplcode(), rr.getSono());
WorkOrder wo = workOrderService.getOne(Wrappers.<WorkOrder>lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
//syDockingLogService.sendDockingLog("查询原单", rr.getRedono(), rr.getPrtno()+","+rr.getSplcode()+","+rr.getSono());
if (wo == null) {
wo = workOrderService.getOne(Wrappers.<WorkOrder>lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
@ -449,7 +449,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
//非3400返工
memo = memo + "返工路线是3400-3400 ---- ";
log.info("3400-3400新车间订单:woCode:{},oldYoCode:{}", newWo.getWoCode(), yieldOrder.getYoCode());
}else {
} else {
//copy原生产订单,更新单号和关键信息
YieldOrder newYieldOrder = yieldOrder;
newYieldOrder.setYoCode(null);
@ -473,7 +473,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
//zxh 20250522 找到原单,非3400-3400,复制pj后不再更改pocode
//newYieldOrder.setPoCode(rr.getRedono());
newYieldOrder.setProduceBool(Boolean.TRUE);
// newYieldOrder.setCurStatus(PjYieldOrder.CUR_STATUS_PROCESSING);
// newYieldOrder.setCurStatus(PjYieldOrder.CUR_STATUS_PROCESSING);
//周新昊 20240912 返修订单找到原单复制pj后为使用部门代码赋值
//newYieldOrder.setUseDeptcode(rr.getUsedept());
yieldOrderService.save(newYieldOrder);
@ -484,7 +484,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
newWo.setReInStore("1");
//newYieldOrder.setPoCode(rr.getRedono());
} else {
// newWo.setWoCode(prWorkOrderCodeService.nextCode(yieldOrder.getPoCode()));
// newWo.setWoCode(prWorkOrderCodeService.nextCode(yieldOrder.getPoCode()));
}
//绑定新车间订单的接收信息
//newWo.setPjYieldOrder(newYieldOrder);
@ -492,7 +492,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
//更新原生产订单状态为已关闭
YieldOrder oldYo = yieldOrderService.getById(wo.getYoId());
if (oldYo != null) {
// oldYo.setCurStatus(PjYieldOrder.CUR_STATUS_VOIDED);
// oldYo.setCurStatus(PjYieldOrder.CUR_STATUS_VOIDED);
oldYo.setCustodian(rr.getRecman());
yieldOrderService.updateById(oldYo);
}
@ -555,7 +555,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
public void completeOrder(MesRbRedoRoutDTO rr, String userName) {
WorkOrder wo =workOrderService.getOne(Wrappers.lambdaQuery(WorkOrder.class)
WorkOrder wo = workOrderService.getOne(Wrappers.lambdaQuery(WorkOrder.class)
.eq(WorkOrder::getBatchNo, rr.getSplcode()));
if (wo != null) {
//记录返工单号
@ -563,7 +563,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
//如果原车间订单状态小于已交接,就更改原订单状态为返工,否则不更改
if (wo.getRunStatus() < WorkOrder.RUN_STATUS_HANDOVER) {
//修改旧订单状态
workOrderService.updateStatus(null,WorkOrder.RUN_STATUS_REWORK,wo.getId(), null);
workOrderService.updateStatus(null, WorkOrder.RUN_STATUS_REWORK, wo.getId(), null);
}
// 如果有 FatherYoId 有值,则代表他是子件 修改部件状态为返工
YieldOrder pjYieldOrder = yieldOrderService.getById(wo.getYoId());
@ -579,10 +579,10 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
}
}
}else {
} else {
}
this.completeOrder(rr, userName);
this.completeOrder(rr, userName);
}
@Override
@ -621,7 +621,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
prWorkPlan.setMakeTeam(item.getMakeTeam());
// 2025-07-23 线上迁移修改注释掉代码
if(item.getPapers() != null && (item.getMakeTeam() != null || item.getReceiveMan() != null)){
if (item.getPapers() != null && (item.getMakeTeam() != null || item.getReceiveMan() != null)) {
WorkPlanLog log = new WorkPlanLog();
log.setUpdateUser(AuthUtil.getUser().getUserId());
log.setUpdateTime(new Date());
@ -647,9 +647,9 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
wp.setMakeTeam(makeTeam.getId());
}
});
// prWorkOrderAdjustService.saveAdjust(woId, oldTsId, newTsId, userInfo);
// prWorkOrderAdjustService.saveAdjust(woId, oldTsId, newTsId, userInfo);
//更新订单主加工单位
// prWorkOrderService.updateHostWorkUnit(woId);
// prWorkOrderService.updateHostWorkUnit(woId);
}
private void unBindBsRackSet(RackSetEntity bsRackSet) {
@ -695,6 +695,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
/**
* 存储同槽额外面积
*
* @param code
*/
private void setBsAdditionalMess(String code) {

@ -46,6 +46,7 @@ import org.springblade.system.pojo.entity.User;
import org.springblade.system.pojo.enums.DictEnum;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.imageio.ImageIO;
@ -144,9 +145,35 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
return R.fail("未找到相关外协订单");
}
@Transactional(rollbackFor = Exception.class)
@Override
public R approval(OemApproval oemApproval) throws Exception {
public R batchApproval(List<OemApproval> approvals) {
for (int i = 0; i < approvals.size(); i++) {
OemApproval approval = approvals.get(i);
try {
R r = singleApprovalInNewTransaction(approval);
} catch (Exception e) {
log.error(String.format("审批失败,单据ID: {}", approval.getWorkOrderRunId()), e);
}
}
return R.success("操作完成");
}
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public R singleApprovalInNewTransaction(OemApproval oemApproval) throws Exception {
return approval(oemApproval);
}
/**
* 审批
*
* @param oemApproval
* @return
* @throws Exception
*/
private R approval(OemApproval oemApproval) throws Exception {
WorkOrderRun workOrderRun = workOrderRunMapper.selectById(oemApproval.getWorkOrderRunId());
WorkOrder wo = workOrderMapper.selectById(workOrderRun.getWoId());
YieldOrder yo = yieldOrderMapper.selectById(wo.getYoId());

@ -1733,6 +1733,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
@Override
@Transactional(rollbackFor = Exception.class)
public R inOemBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId) {
WorkOrder oldWo = this.getById(oldWoId);
WorkOrder newWo = this.addWorkOrderAndYieldOrder(oldWo, inBatchesDTO, true);

@ -35,6 +35,7 @@ import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
@ -104,8 +105,11 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
private IRemindMsgService service;
@Resource
private WorkPlanMapper workPlanMapper;
// @Resource
// private IWorkOrderService workOrderService;
@Resource
private IWorkOrderService workOrderService;
private WorkOrderMapper workOrderMapper;
@Resource
private YieldOrderMapper yieldOrderMapper;
@Resource
@ -404,7 +408,8 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
return null;
}
JSONObject jsonObj = new JSONObject();
WorkOrder wo = workOrderService.getById(woId);
// WorkOrder wo = workOrderService.getById(woId);
WorkOrder wo = workOrderMapper.selectById(woId);
YieldOrder pjYieldOrder = yieldOrderMapper.selectById(wo.getYoId());
QueryWrapper<DsPartEntity> qwpart = new QueryWrapper<>();
qwpart.eq("PART_CODE", pjYieldOrder.getPartCode());
@ -446,7 +451,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 生产过程(放在获取检验记录下面,这个方法会排除数据)
this.getNewProcess(wpList, jsonObj, planList);
return null;
return jsonObj;
}
public void getNewProcess(List<WorkPlan> wpList, JSONObject jsonObj, List<Boolean> modelFlag) {
@ -498,7 +503,19 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 2025-07-23 线上迁移修改 删除了prMacToolUseService.listSlotInfo方法调用
workPlan.setSlotList(slotList);
}
// 设备编号信息(从设备,工装使用记录获取)
// List<MacToolUse> mtuList = workPlanMapper.listMacToolUse(workPlan.getWpId(), Boolean.FALSE);
// if (mtuList.size() > 0) {
// // 设备编号
// String gj = StringUtils.join(mtuList.stream().filter(i -> i.getBsRackSet() != null).map(i -> i.getBsRackSet().getRsCode()).collect(Collectors.toList()), "'、'");
// String fb = StringUtils.join(mtuList.stream().filter(i -> i.getBsFeiBaSet() != null).map(i -> i.getBsFeiBaSet().getFsCode()).collect(Collectors.toList()), "、");
// String eq = StringUtils.join(mtuList.stream().filter(i -> i.getEquipmentCard() != null).map(i -> i.getEquipmentCard().getDeviceCode()).collect(Collectors.toList()), "、");
// workPlan.setGjCode(gj);
// workPlan.setFbCode(fb);
// //zxh 20250107 电子档案工序设备编号不再拼接烘箱,eq中已存在烘箱
//// workPlan.setDeviceCode(box != null && box.getDeviceId() != null ? eq + "、" + box.getDeviceId() : eq);
// workPlan.setDeviceCode(eq);
// }
}

@ -33,6 +33,9 @@ import org.springblade.desk.quality.constant.InspectionTaskConst;
import org.springblade.desk.quality.constant.ReviewSheetConst;
import org.springblade.desk.quality.excel.ReviewSheetExcel;
import org.springblade.desk.quality.mapper.ReviewSheetMapper;
import org.springblade.desk.quality.pojo.dto.ReviewDutyDTO;
import org.springblade.desk.quality.pojo.dto.ReviewFaultDTO;
import org.springblade.desk.quality.pojo.dto.ReviewSheetDTO;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.ReviewDuty;
import org.springblade.desk.quality.pojo.entity.ReviewFault;
@ -378,29 +381,65 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
rs.setHasSaved(BaseValue.YES);
// 处置单
saveOrUpdate(rs);
// if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) {
// HttpHeaders headers = new HttpHeaders();
// headers.setContentType(MediaType.APPLICATION_JSON);
// JSONObject obj = new JSONObject();
// obj.put("qmsRepairApplyDTO", rs);
// obj.put("qmsRepairPartList", listD);
// obj.put("qmsRepairMalfList", listF);
// HttpEntity<JSONObject> entity = new HttpEntity<>(obj, headers);
// ResponseEntity<JSONObject> responseEntity;
// JSONObject responseBody;
// try {
// responseEntity = httpClientTemplate.postForEntity("http://192.168.119.68:10113" +
// "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class);
// JSONObject result = responseEntity.getBody();
//
// responseBody = result.getJSONObject("responseBody");
// if (responseBody == null) {
// throw new BusinessException("审理单,接口返回值null");
// }
// } catch (Exception e) {
// throw new RuntimeException("审理单,接口返回值null");
// }
// }
if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
ReviewSheetDTO dto = new ReviewSheetDTO();
dto.setBusinessNo(rs.getWoCode());
dto.setMdsItemCode(dto.getPreCode());
dto.setTrialStatus(rs.getReviewStatus().toString());
dto.setHearDis(rs.getSubmitType().toString());
dto.setTrialType(rs.getReviewOrderMode()+"");
dto.setPreCode(rs.getUpCode());
dto.setProporTion(rs.getScale());
dto.setSubQty(rs.getUnqualifiedQty());
List<ReviewDutyDTO> vods = new ArrayList<>();
for(ReviewDuty vod : listD){
ReviewDutyDTO vodDTO = new ReviewDutyDTO();
vodDTO.setTrialId(vod.getReviewSheetId()+"");
vodDTO.setReqQty(vod.getQty());
vodDTO.setUnit(vod.getUnit());
vodDTO.setCorrBatchNo(vod.getRelevantBatch());
vods.add(vodDTO);
}
List<ReviewFaultDTO> vofs = new ArrayList<>();
for(ReviewFault vof : listF){
ReviewFaultDTO vofDTO = new ReviewFaultDTO();
vofDTO.setTrialId(vof.getReviewSheetId()+"");
vofDTO.setFaultType(vof.getNgType2Id()+"");
vofDTO.setQuestClass(vof.getNgType3Id()+"");
vofDTO.setQuestSubclass(vof.getNgType4Id()+"");
vofDTO.setProportion(vof.getScale());
vofDTO.setFaultQty(vof.getQty());
vofDTO.setDescribe(vof.getMemo());
vofs.add(vofDTO);
}
JSONObject obj = new JSONObject();
obj.put("qmsRepairApplyDTO", dto);
obj.put("qmsRepairPartList", vods);
obj.put("qmsRepairMalfList", vofs);
HttpEntity<JSONObject> entity = new HttpEntity<>(obj, headers);
ResponseEntity<JSONObject> responseEntity;
JSONObject responseBody;
try {
responseEntity = httpClientTemplate.postForEntity("http://192.168.119.68:10113" +
"/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class);
JSONObject result = responseEntity.getBody();
responseBody = result.getJSONObject("responseBody");
if (responseBody == null) {
throw new BusinessException("审理单,接口返回值null");
}
} catch (Exception e) {
throw new RuntimeException("审理单,接口返回值null");
}
}
return R.success("成功");
}

@ -112,7 +112,8 @@ public class UserController {
TeamSet detail = workCenterClient.getTeamSetById(teamSet.getId()).getData();
if(detail != null){
String teamId = detail.getTeamMemberId();
// String teamId = detail.getTeamMemberId();
String teamId = detail.getTeamId();
if(null != teamId && !"".equals(teamId)){
List<Long> ids = Func.toLongList(teamId);
@ -148,7 +149,8 @@ public class UserController {
List<User> teams = new ArrayList<>();
TeamSet detail = workCenterClient.getTeamSetById(teamSet.getId()).getData();
if(detail != null){
String teamId = detail.getTeamMemberId();
// String teamId = detail.getTeamMemberId();
String teamId = detail.getTeamId();
if(null != teamId && !"".equals(teamId)){
List<Long> ids = Func.toLongList(teamId);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();

@ -126,7 +126,8 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
TeamSet detail = workCenterClient.getTeamSetById(teamSetId).getData();
if(detail != null){
String teamId = detail.getTeamMemberId();
// String teamId = detail.getTeamMemberId();
String teamId = detail.getTeamId();
if(null != teamId && !"".equals(teamId)){
List<Long> ids = Func.toLongList(teamId);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();

Loading…
Cancel
Save