装配派工:

1个人点完结,若无其他人报工不允许完结
This commit is contained in:
Ledo 2025-05-16 21:51:43 +08:00
parent 2213313cce
commit d3c825bb13
5 changed files with 40 additions and 8 deletions

View File

@ -109,6 +109,7 @@ public interface ErrorCodeConstants {
ErrorCode TASK_DISPATCH_TASK_NO_PERMISSION_FOR_OPERATE = new ErrorCode(1_009_005, "任务不满足操作条件");
ErrorCode TASK_DISPATCH_TASK_IS_OVER = new ErrorCode(1_009_007, "报工数量已完成");
ErrorCode TASK_DISPATCH_TASK_REPORT_AMOUNT_EXCESS = new ErrorCode(1_009_006, "无法超额报工");
ErrorCode TASK_REPORT_OTHER_PERSON_NO_SUBMIT = new ErrorCode(1_009_008, "其他人员尚未报工,无法结束生产");
/*************质量管理***********/
ErrorCode UNQUALIFIED_NOTIFICATION_NOT_EXISTS = new ErrorCode(1_010_001, "品质异常通知单审核不存在");
ErrorCode QUALITY_FEEDBACK_NOT_EXISTS = new ErrorCode(1_010_002, "客户反馈质量不存在");

View File

@ -117,9 +117,9 @@ public interface FpUserDetailMapper extends BaseMapperX<FpUserDetailDO> {
.select("c.nickname as nick_Name ")
// .leftJoin(PostDO.class,"b", PostDO::getId,FpUserDetailDO::getPostId)
.leftJoin(AdminUserDO.class,"c",AdminUserDO::getId,FpUserDetailDO::getBusyId)
.leftJoin(FpUserDO.class,"a",FpUserDO::getId, FpUserDetailDO::getFpId)
.eq(FpUserDO::getType,"1")
.eq(FpUserDetailDO::getIsRes,"Y")
// .leftJoin(FpUserDO.class,"a",FpUserDO::getId, FpUserDetailDO::getFpId)
// .eq(FpUserDO::getType,"1")
// .eq(FpUserDetailDO::getIsRes,"Y")
.in(FpUserDetailDO::getPostId,list);

View File

@ -168,6 +168,7 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
}
List<TaskDispatchDetailDO> planBbPage(@Param("reqVO")TaskPlanJDBaoBiaoPageReqVO reqVO);
List<TaskDispatchDetailDO> planBb(@Param("reqVO")TaskPlanJDBaoBiaoPageReqVO reqVO);
List<HashMap<Long,Long>> sumAssembleReport(List<Long> list);
// default PageResult<TaskDispatchDetailDO> planBbPage(TaskPlanJDBaoBiaoPageReqVO reqVO) {
// MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>();
// query.select("MAX(d.code)as projectCode,MAX(d.project_name)as projectName,MAX(g.task_no) as taskNo,0 as planType," +

View File

@ -54,6 +54,7 @@ import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -644,13 +645,32 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
//装配看看是不是多人如果是多人判断一下
if (taskDispatchDO.getDispatchType().equals("ASSEMBLE")){
List<TaskDispatchDetailDO> taskDispatchDetailDOS = taskDispatchDetailMapper.selectList(new LambdaQueryWrapperX<TaskDispatchDetailDO>().eq(TaskDispatchDetailDO::getDetailOwnerId, taskDispatchDetailDO.getDetailOwnerId()));
boolean allOver = true;
List<Long> dispatchDetailId = new ArrayList<>();
for (TaskDispatchDetailDO dispatchDetailDO : taskDispatchDetailDOS) {
if (!dispatchDetailDO.getId().equals(taskDispatchDetailDO.getId()) && !(dispatchDetailDO.getProcedureStatus() == TaskDispatchProcedureStatusEnum.COMPLETED.getCode())){
allOver = false;
dispatchDetailId.add(dispatchDetailDO.getId());
}
}
if (allOver){
boolean allReport = true;
if (CollUtil.isNotEmpty(dispatchDetailId)){
List<HashMap<Long, Long>> hashMaps = taskDispatchDetailMapper.sumAssembleReport(dispatchDetailId);
HashMap<Long,Long> reportMap = new HashMap<>();
for (HashMap<Long, Long> hashMap : hashMaps) {
reportMap.putAll(hashMap);
}
for (Long l : dispatchDetailId) {
if (!reportMap.containsKey(l)){
allReport = false;
break;
}
}
}
if (!allReport){
throw exception(TASK_REPORT_OTHER_PERSON_NO_SUBMIT);
}
if (allReport){
TaskDispatchDetailOwnerDO taskDispatchDetailOwnerDO = taskDispatchDetailOwnerMapper.selectById(taskDispatchDetailDO.getDetailOwnerId());
taskDispatchDetailOwnerDO.setProcedureStatus(TaskDispatchProcedureStatusEnum.COMPLETED.getCode());
taskDispatchDetailOwnerMapper.updateById(taskDispatchDetailOwnerDO);
@ -788,11 +808,13 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
@Override
public List<FpUserDetailDO> getAssembleOwner(){
List<FpUserDetailDO> fpUserDetailDOS = fpUserDetailMapper.selectOwnerList();
// List<HashMap<String,String>> fpUserMapList = new ArrayList<>();
if (CollUtil.isEmpty(fpUserDetailDOS)){
throw exception(OWNER_NOT_EXISTS);
}
return fpUserDetailDOS;
Map<Long, FpUserDetailDO> map = fpUserDetailDOS.stream()
.collect(Collectors.toMap(FpUserDetailDO::getBusyId, Function.identity(), (existing, replacement) -> existing));
List<FpUserDetailDO> uniqueFpUserDetailDOS = new ArrayList<>(map.values());
return uniqueFpUserDetailDOS;
}
@Override
public PageResult<TaskDispatchDetailTotalVO> getTaskDispatchPageDetailTotal(TaskDispatchDetailTotalVO pageTotalVO) {

View File

@ -102,4 +102,12 @@
</if>
GROUP BY t.id
</select>
<select id="sumAssembleReport" parameterType="java.util.List">
select t.dispatch_detail_id,count(t.id) from pro_task_report t where t.dispatch_detail_id in
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
and t.has_report = 1
group by t.dispatch_detail_id
</select>
</mapper>