Browse Source

1、人员报工列表接口优化

master_hella_20240701
bjang03 1 year ago
parent
commit
ecc8505ff7
  1. 4
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/mesworkschedulingdetail/MesWorkSchedulingDetailController.java
  2. 5
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/mesworkschedulingdetail/vo/GetPeopleReportByOrderReqVO.java
  3. 47
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/mesworkschedulingdetail/MesWorkSchedulingDetailServiceImpl.java
  4. 16
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/api/team/TeamServiceAPI.java
  5. 17
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/api/team/dto/TeamDTO.java
  6. 29
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/api/team/TeamServiceAPIImpl.java

4
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/mesworkschedulingdetail/MesWorkSchedulingDetailController.java

@ -120,10 +120,10 @@ public class MesWorkSchedulingDetailController {
workSchedulingDetailService.reportWorkByProcess(reqVO); workSchedulingDetailService.reportWorkByProcess(reqVO);
return success(null); return success(null);
} }
@PostMapping("/getPeopleReportList") @GetMapping("/getPeopleReportList")
@Operation(summary = "获取人员报工列表") @Operation(summary = "获取人员报工列表")
@PreAuthorize("@ss.hasPermission('mes:workSchedulingDetail:query')") @PreAuthorize("@ss.hasPermission('mes:workSchedulingDetail:query')")
public CommonResult<List<GetPeopleReportByOrderResVO>> getPeopleReportList(@Valid @RequestBody GetPeopleReportByOrderReqVO req) { public CommonResult<List<GetPeopleReportByOrderResVO>> getPeopleReportList(@Valid GetPeopleReportByOrderReqVO req) {
return success(workSchedulingDetailService.getPeopleReportList(req)); return success(workSchedulingDetailService.getPeopleReportList(req));
} }
} }

5
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/mesworkschedulingdetail/vo/GetPeopleReportByOrderReqVO.java

@ -16,6 +16,7 @@ public class GetPeopleReportByOrderReqVO {
@NotNull(message = "工序编码不能为空") @NotNull(message = "工序编码不能为空")
private String processCode; private String processCode;
@Schema(description = "用户账号") @Schema(description = "班组编码")
private String userName; @NotNull(message = "班组编码不能为空")
private String teamCode;
} }

47
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/mesworkschedulingdetail/MesWorkSchedulingDetailServiceImpl.java

@ -8,12 +8,15 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.module.mes.controller.mesworkschedulingdetail.vo.*; import com.win.module.mes.controller.mesworkschedulingdetail.vo.*;
import com.win.module.mes.convert.mesworkschedulingdetail.MesWorkSchedulingDetailConvert; import com.win.module.mes.convert.mesworkschedulingdetail.MesWorkSchedulingDetailConvert;
import com.win.module.mes.dal.dataobject.mesjobreportlog.MesJobReportLogDO; import com.win.module.mes.dal.dataobject.mesjobreportlog.MesJobReportLogDO;
import com.win.module.mes.dal.dataobject.mesteamsetting.MesTeamSettingDO;
import com.win.module.mes.dal.dataobject.mesworkscheduling.MesWorkSchedulingDO; import com.win.module.mes.dal.dataobject.mesworkscheduling.MesWorkSchedulingDO;
import com.win.module.mes.dal.dataobject.mesworkschedulingdetail.MesWorkSchedulingDetailDO; import com.win.module.mes.dal.dataobject.mesworkschedulingdetail.MesWorkSchedulingDetailDO;
import com.win.module.mes.dal.mysql.mesjobreportlog.MesJobReportLogMapper; import com.win.module.mes.dal.mysql.mesjobreportlog.MesJobReportLogMapper;
import com.win.module.mes.dal.mysql.mesworkscheduling.MesWorkSchedulingMapper; import com.win.module.mes.dal.mysql.mesworkscheduling.MesWorkSchedulingMapper;
import com.win.module.mes.dal.mysql.mesworkschedulingdetail.MesWorkSchedulingDetailMapper; import com.win.module.mes.dal.mysql.mesworkschedulingdetail.MesWorkSchedulingDetailMapper;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.wms.api.team.TeamServiceAPI;
import com.win.module.wms.api.team.dto.TeamDTO;
import org.apache.calcite.util.Util; import org.apache.calcite.util.Util;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -47,6 +50,8 @@ public class MesWorkSchedulingDetailServiceImpl implements MesWorkSchedulingDeta
private MesJobReportLogMapper jobReportLogMapper; private MesJobReportLogMapper jobReportLogMapper;
@Resource @Resource
private MesWorkSchedulingMapper workSchedulingMapper; private MesWorkSchedulingMapper workSchedulingMapper;
@Resource
private TeamServiceAPI teamServiceAPI;
@Override @Override
public Long createWorkSchedulingDetail(MesWorkSchedulingDetailCreateReqVO createReqVO) { public Long createWorkSchedulingDetail(MesWorkSchedulingDetailCreateReqVO createReqVO) {
// 插入 // 插入
@ -112,7 +117,7 @@ public class MesWorkSchedulingDetailServiceImpl implements MesWorkSchedulingDeta
List<MesWorkSchedulingDO> workSchedulingDOList = new ArrayList<>(); List<MesWorkSchedulingDO> workSchedulingDOList = new ArrayList<>();
List<MesWorkSchedulingDetailDO> workSchedulingDetailDOList = new ArrayList<>(); List<MesWorkSchedulingDetailDO> workSchedulingDetailDOList = new ArrayList<>();
List<MesJobReportLogDO> jobReportLogDOList = new ArrayList<>(); List<MesJobReportLogDO> jobReportLogDOList = new ArrayList<>();
String currentUserName = userApi.getUser(getLoginUserId()).getUsername().toString(); String currentUserName = userApi.getUser(getLoginUserId()).getUsername();
//todo 验证工单任务是否存在 //todo 验证工单任务是否存在
reqVO.forEach(item ->{ reqVO.forEach(item ->{
MesWorkSchedulingDO workSchedulingDO = workSchedulingMapper.selectOne(MesWorkSchedulingDO::getSchedulingCode,item.getSchedulingCode()); MesWorkSchedulingDO workSchedulingDO = workSchedulingMapper.selectOne(MesWorkSchedulingDO::getSchedulingCode,item.getSchedulingCode());
@ -174,24 +179,32 @@ public class MesWorkSchedulingDetailServiceImpl implements MesWorkSchedulingDeta
@Override @Override
public List<GetPeopleReportByOrderResVO> getPeopleReportList(GetPeopleReportByOrderReqVO req) { public List<GetPeopleReportByOrderResVO> getPeopleReportList(GetPeopleReportByOrderReqVO req) {
List<MesWorkSchedulingDetailDO> schedulingDetailList = workSchedulingDetailMapper.selectList(new LambdaQueryWrapperX<MesWorkSchedulingDetailDO>() LambdaQueryWrapperX<MesWorkSchedulingDetailDO> wrapper = new LambdaQueryWrapperX<>();
.eq(MesWorkSchedulingDetailDO::getPlanNoDay, req.getPlanDayCode()) wrapper.eq(MesWorkSchedulingDetailDO::getPlanNoDay, req.getPlanDayCode())
.eq(MesWorkSchedulingDetailDO::getNodeCode, req.getProcessCode()) .eq(MesWorkSchedulingDetailDO::getNodeCode, req.getProcessCode())
.select(MesWorkSchedulingDetailDO::getSchedulingCode,MesWorkSchedulingDetailDO::getPersonValidate) .select(MesWorkSchedulingDetailDO::getSchedulingCode,MesWorkSchedulingDetailDO::getPersonValidate);
); //todo 验证当前用户是否在工作组中
String loginUserName = userApi.getUser(getLoginUserId()).getUsername();
TeamDTO team = teamServiceAPI.getTeam(req.getTeamCode());
if(!team.getMembersCode().contains(loginUserName)){
throw exception(JOB_REPORT_PERSON_VALIDATE_FAIL);
}
//todo 如果不是teamLeader则只查询当前用户的报工项
if(!Objects.equals(team.getTeamLeaderCode(),loginUserName)){
wrapper.eq(MesWorkSchedulingDetailDO::getReceivePerson,loginUserName);
}
List<MesWorkSchedulingDetailDO> schedulingDetailList = workSchedulingDetailMapper.selectList(wrapper);
List<GetPeopleReportByOrderResVO> resultList = new ArrayList<>(); List<GetPeopleReportByOrderResVO> resultList = new ArrayList<>();
schedulingDetailList.forEach(detail->{ schedulingDetailList.forEach(detail-> JSONArray.parseArray(detail.getPersonValidate()).forEach(person ->{
JSONArray.parseArray(detail.getPersonValidate()).forEach(person ->{ JSONObject personJson = JSONObject.parseObject(person.toString());
JSONObject personJson = JSONObject.parseObject(person.toString()); if (!personJson.isEmpty() && personJson.containsKey("code")){
if (!personJson.isEmpty() && personJson.containsKey("code")){ resultList.add(new GetPeopleReportByOrderResVO(){{
resultList.add(new GetPeopleReportByOrderResVO(){{ setSchedulingCode(detail.getSchedulingCode());
setSchedulingCode(detail.getSchedulingCode()); setPersonCode(personJson.getString("code"));
setPersonCode(personJson.getString("code")); setPersonName(personJson.getString("name"));
setPersonName(personJson.getString("name")); }});
}}); }
} }));
});
});
return resultList; return resultList;
} }
} }

16
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/api/team/TeamServiceAPI.java

@ -0,0 +1,16 @@
package com.win.module.wms.api.team;
import com.win.module.wms.api.team.dto.TeamDTO;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
public interface TeamServiceAPI {
/**
* 获取team信息
* @param teamCode
* @return
*/
TeamDTO getTeam(@Valid @NotNull String teamCode);
}

17
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/api/team/dto/TeamDTO.java

@ -0,0 +1,17 @@
package com.win.module.wms.api.team.dto;
import lombok.Data;
import java.util.List;
@Data
public class TeamDTO {
/**
* 成员json
*/
private List<String> membersCode;
/**
* 班组负责人编码
*/
private String teamLeaderCode;
}

29
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/api/team/TeamServiceAPIImpl.java

@ -0,0 +1,29 @@
package com.win.module.wms.api.team;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.win.module.wms.api.team.dto.TeamDTO;
import com.win.module.wms.dal.dataobject.team.TeamDO;
import com.win.module.wms.dal.mysql.team.TeamMapper;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.stream.Collectors;
@Validated
public class TeamServiceAPIImpl implements TeamServiceAPI {
@Resource
private TeamMapper teamMapper;
@Override
public TeamDTO getTeam(String teamCode) {
TeamDO team = teamMapper.selectOne(TeamDO::getCode,teamCode);
if (team == null){
return null;
}
TeamDTO dto = new TeamDTO(){{
setTeamLeaderCode(team.getTeamMonitorCode());
setMembersCode(new JSONArray(team.getMembers()).stream().map(item-> new JSONObject(item).getStr("username")).collect(Collectors.toList()));
}};
return dto;
}
}
Loading…
Cancel
Save