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);
return success(null);
}
@PostMapping("/getPeopleReportList")
@GetMapping("/getPeopleReportList")
@Operation(summary = "获取人员报工列表")
@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));
}
}

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 = "工序编码不能为空")
private String processCode;
@Schema(description = "用户账号")
private String userName;
@Schema(description = "班组编码")
@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.convert.mesworkschedulingdetail.MesWorkSchedulingDetailConvert;
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.mesworkschedulingdetail.MesWorkSchedulingDetailDO;
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.mesworkschedulingdetail.MesWorkSchedulingDetailMapper;
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.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -47,6 +50,8 @@ public class MesWorkSchedulingDetailServiceImpl implements MesWorkSchedulingDeta
private MesJobReportLogMapper jobReportLogMapper;
@Resource
private MesWorkSchedulingMapper workSchedulingMapper;
@Resource
private TeamServiceAPI teamServiceAPI;
@Override
public Long createWorkSchedulingDetail(MesWorkSchedulingDetailCreateReqVO createReqVO) {
// 插入
@ -112,7 +117,7 @@ public class MesWorkSchedulingDetailServiceImpl implements MesWorkSchedulingDeta
List<MesWorkSchedulingDO> workSchedulingDOList = new ArrayList<>();
List<MesWorkSchedulingDetailDO> workSchedulingDetailDOList = new ArrayList<>();
List<MesJobReportLogDO> jobReportLogDOList = new ArrayList<>();
String currentUserName = userApi.getUser(getLoginUserId()).getUsername().toString();
String currentUserName = userApi.getUser(getLoginUserId()).getUsername();
//todo 验证工单任务是否存在
reqVO.forEach(item ->{
MesWorkSchedulingDO workSchedulingDO = workSchedulingMapper.selectOne(MesWorkSchedulingDO::getSchedulingCode,item.getSchedulingCode());
@ -174,24 +179,32 @@ public class MesWorkSchedulingDetailServiceImpl implements MesWorkSchedulingDeta
@Override
public List<GetPeopleReportByOrderResVO> getPeopleReportList(GetPeopleReportByOrderReqVO req) {
List<MesWorkSchedulingDetailDO> schedulingDetailList = workSchedulingDetailMapper.selectList(new LambdaQueryWrapperX<MesWorkSchedulingDetailDO>()
.eq(MesWorkSchedulingDetailDO::getPlanNoDay, req.getPlanDayCode())
LambdaQueryWrapperX<MesWorkSchedulingDetailDO> wrapper = new LambdaQueryWrapperX<>();
wrapper.eq(MesWorkSchedulingDetailDO::getPlanNoDay, req.getPlanDayCode())
.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<>();
schedulingDetailList.forEach(detail->{
JSONArray.parseArray(detail.getPersonValidate()).forEach(person ->{
JSONObject personJson = JSONObject.parseObject(person.toString());
if (!personJson.isEmpty() && personJson.containsKey("code")){
resultList.add(new GetPeopleReportByOrderResVO(){{
setSchedulingCode(detail.getSchedulingCode());
setPersonCode(personJson.getString("code"));
setPersonName(personJson.getString("name"));
}});
}
});
});
schedulingDetailList.forEach(detail-> JSONArray.parseArray(detail.getPersonValidate()).forEach(person ->{
JSONObject personJson = JSONObject.parseObject(person.toString());
if (!personJson.isEmpty() && personJson.containsKey("code")){
resultList.add(new GetPeopleReportByOrderResVO(){{
setSchedulingCode(detail.getSchedulingCode());
setPersonCode(personJson.getString("code"));
setPersonName(personJson.getString("name"));
}});
}
}));
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