网页版领料工单接入,材料站退料单
This commit is contained in:
parent
c9f1e51d3f
commit
7141100081
|
|
@ -287,6 +287,17 @@ public class BackApplyInfoController extends BaseController {
|
|||
return backApplyInfoService.selectBackApplyInfoById(id, keyWord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取材料站退料任务详细信息
|
||||
*/
|
||||
@ApiOperation(value = "获取材料站退料任务详细信息")
|
||||
// @RequiresPermissions("back:info:query")
|
||||
@GetMapping(value = "/clz/{id}")
|
||||
public AjaxResult getInfoClz(@PathVariable("id") Long id,
|
||||
@RequestParam(value = "keyWord", required = false) String keyWord) {
|
||||
return backApplyInfoService.selectBackApplyInfoByIdClz(id, keyWord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询退料任务详情信息
|
||||
* @param backApplyDetails
|
||||
|
|
|
|||
|
|
@ -249,5 +249,7 @@ public interface IBackApplyInfoService {
|
|||
int syncProject(BackApplyInfo backApplyInfo);
|
||||
|
||||
int syncProjectDetails(BackApplyInfo backApplyInfo);
|
||||
|
||||
AjaxResult selectBackApplyInfoByIdClz(Long id, String keyWord);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -201,6 +201,111 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
|
|||
return ajaxResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询材料站退料任务 - 性能优化版
|
||||
*
|
||||
* @param id 退料任务主键
|
||||
* @return 退料任务
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult selectBackApplyInfoByIdClz(Long id, String keyWord) {
|
||||
BackApplyRequestVo backApplyRequestVo = new BackApplyRequestVo();
|
||||
//先根据外层id查询上层信息
|
||||
BackApplyInfo backApplyInfo = backApplyInfoMapper.selectBackApplyInfoById(id);
|
||||
Long userId = SecurityUtils.getLoginUser().getUserid();
|
||||
Set<String> userRoles = SecurityUtils.getLoginUser().getRoles();
|
||||
// 检查用户是否具有特殊角色
|
||||
|
||||
backApplyInfo.setUserId(null);
|
||||
|
||||
// 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息
|
||||
/*List<Long> typeIdList = backApplyInfoMapper.selectTypeIdList(userId);
|
||||
if (CollectionUtils.isEmpty(typeIdList)) {
|
||||
backApplyInfo.setUserId(userId == 0 ? null : userId);
|
||||
}*/
|
||||
|
||||
// 设置审批人签名url,目前固定查询夏成刚签名信息
|
||||
BackApplyInfo info = backApplyInfoMapper.getDirectAuditUrl(backApplyInfo);
|
||||
if (info != null && StringUtils.isNotBlank(info.getDirectAuditSignUrl())) {
|
||||
backApplyInfo.setDirectAuditSignType(info.getDirectAuditSignType());
|
||||
if (!info.getDirectAuditSignUrl().startsWith("http")) {
|
||||
backApplyInfo.setDirectAuditSignUrl("data:image/png;base64," + info.getDirectAuditSignUrl());
|
||||
} else {
|
||||
backApplyInfo.setDirectAuditSignUrl(info.getDirectAuditSignUrl());
|
||||
}
|
||||
}
|
||||
|
||||
// 设置退料人签名url
|
||||
if (StringUtils.isNotBlank(backApplyInfo.getBackSignUrl())) {
|
||||
if (!backApplyInfo.getBackSignUrl().startsWith("http")) {
|
||||
backApplyInfo.setBackSignUrl("data:image/png;base64," + backApplyInfo.getBackSignUrl());
|
||||
}
|
||||
}
|
||||
|
||||
// 设置制单人签名url
|
||||
if (StringUtils.isNotBlank(backApplyInfo.getSignUrl())) {
|
||||
if (!backApplyInfo.getSignUrl().startsWith("http")) {
|
||||
backApplyInfo.setSignUrl("data:image/png;base64," + backApplyInfo.getBackSignUrl());
|
||||
}
|
||||
}
|
||||
|
||||
backApplyRequestVo.setBackApplyInfo(backApplyInfo);
|
||||
|
||||
//查询退料详情信息
|
||||
backApplyInfo.setKeyWord(keyWord);
|
||||
// 移出maCodeList集合中状态不为在用的数据
|
||||
List<MaCodeVo> newCodeList = new ArrayList<>();
|
||||
List<BackApplyDetails> backApplyDetailsList = backApplyInfoMapper.selectBackApplyDetailsListByTaskId(backApplyInfo);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(backApplyDetailsList)) {
|
||||
/*if (!CollectionUtils.isEmpty(typeIdList)) {
|
||||
backApplyDetailsList = backApplyDetailsList.stream()
|
||||
.filter(item -> typeIdList.contains(item.getFirstId()))
|
||||
.collect(Collectors.toList());
|
||||
}*/
|
||||
|
||||
// 核心优化:减少数据库查询次数
|
||||
// 1. 一次性查询编码设备信息
|
||||
List<MaCodeVo> maCodeList = backApplyInfoMapper.selectByCode(id);
|
||||
|
||||
// 2. 处理状态不为在用的设备编码
|
||||
if ("0".equals(backApplyInfo.getStatus()) && CollectionUtils.isNotEmpty(maCodeList)) {
|
||||
newCodeList = filterNonInUseEquipment(maCodeList);
|
||||
maCodeList = filterInUseEquipment(maCodeList);
|
||||
}
|
||||
|
||||
// 3. 优化:只有在有编码设备时才查询类型树,减少不必要的复杂查询
|
||||
Map<Long, BigDecimal> typeNumMap = new HashMap<>();
|
||||
if (hasCodedEquipment(backApplyDetailsList)) {
|
||||
List<TypeTreeNode> listL4 = mapper.getUseTypeTreeL4(backApplyInfo);
|
||||
typeNumMap = buildTypeNumMappingSimple(listL4);
|
||||
}
|
||||
|
||||
// 4. 一次性查询所有附件信息
|
||||
Map<Long, List<BmFileInfo>> allFileInfoMap = fetchAllFileInfosOptimized(id);
|
||||
|
||||
// 5. 预构建映射表
|
||||
Map<Long, List<MaCodeVo>> typeCodeMap = buildTypeCodeMappingSimple(maCodeList);
|
||||
Map<Long, MaCodeVo> maIdCodeMap = buildMaIdCodeMappingSimple(maCodeList);
|
||||
|
||||
// 6. 快速处理每个退料详情
|
||||
for (BackApplyDetails details : backApplyDetailsList) {
|
||||
processBackApplyDetailsSimple(details, typeNumMap, typeCodeMap, allFileInfoMap, newCodeList, maIdCodeMap);
|
||||
}
|
||||
|
||||
backApplyRequestVo.setBackApplyDetailsList(backApplyDetailsList);
|
||||
}
|
||||
|
||||
AjaxResult ajaxResult = AjaxResult.success();
|
||||
ajaxResult.put("data", backApplyRequestVo);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(newCodeList)) {
|
||||
String msg = buildNotificationMessage(newCodeList);
|
||||
ajaxResult.put("msg", msg);
|
||||
}
|
||||
return ajaxResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否有编码设备
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ public interface LeaseTaskMapper {
|
|||
|
||||
void updateWorkPeopleInfo(WorkPeopleInfo peopleInfo);
|
||||
|
||||
WorkPeopleInfo getWorkPeopleInfo(WorkPeopleInfo peopleInfo);
|
||||
List<WorkPeopleInfo> getWorkPeopleInfo(WorkPeopleInfo peopleInfo);
|
||||
|
||||
/**
|
||||
* 根据code查询领用申请详情
|
||||
|
|
|
|||
|
|
@ -284,6 +284,7 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
|
||||
private void createWorkOrderAndPeople(SysUser sysUser, LeaseApplyInfo leaseApplyInfo, TmTask tmTask, int newId) {
|
||||
//获取工程名称
|
||||
/********* information表中塞 app类型的工单 *********/
|
||||
String projectName = mapper.getProjectNameById(leaseApplyInfo.getProjectId());
|
||||
leaseApplyInfo.setProjectName(projectName);
|
||||
String id = UUID.randomUUID().toString().replace("-", "");
|
||||
|
|
@ -309,15 +310,13 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
workApplyInfo.setWebUrl(webUrlBase + queryParams);
|
||||
workApplyInfo.setRout(webUrlBase + queryParams);
|
||||
|
||||
int countWork = mapper.insertWorkOrder(workApplyInfo);
|
||||
if (countWork > 0) {
|
||||
|
||||
int countWork = mapper.insertWorkOrder(workApplyInfo);
|
||||
//查询审批人集合
|
||||
WorkPeopleInfo info = new WorkPeopleInfo();
|
||||
info.setFlowId(newId);
|
||||
|
||||
List<WorkPeopleInfo> workPeopleInfoList = mapper.selectWorkPeopleInfoList(info.getFlowId());
|
||||
|
||||
if (countWork > 0) {
|
||||
if(workPeopleInfoList != null && workPeopleInfoList.size() > 0){
|
||||
WorkPeopleInfo person = workPeopleInfoList.get(0);
|
||||
String roleIds = person.getRoleIds();
|
||||
|
|
@ -341,6 +340,50 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
/********* information表中塞 app类型的工单 *********/
|
||||
|
||||
/********* information表中塞 web类型的工单 *********/
|
||||
WorkApplyInfo workApplyInfoWeb = new WorkApplyInfo();
|
||||
workApplyInfoWeb = workApplyInfo;
|
||||
String idWeb = UUID.randomUUID().toString().replace("-", "");
|
||||
String webUrlBaseWeb = "/mea-view/#/business-details/receive-apply/index";
|
||||
String queryParamsWeb = UriComponentsBuilder.newInstance()
|
||||
.queryParam("appId", "b72d4088a412217dc807bcc3620d4408")
|
||||
.queryParam("taskId", tmTask.getTaskId())
|
||||
.queryParam("id", leaseApplyInfo.getId())
|
||||
.build().encode().toUriString();
|
||||
workApplyInfoWeb.setId(idWeb);
|
||||
workApplyInfoWeb.setTypeId(2025051001);
|
||||
workApplyInfoWeb.setWebAppId("b72d4088a412217dc807bcc3620d4408");
|
||||
workApplyInfoWeb.setWebUrl(webUrlBaseWeb + queryParamsWeb);
|
||||
workApplyInfoWeb.setRout(webUrlBaseWeb + queryParamsWeb);
|
||||
int countWorkWeb = mapper.insertWorkOrder(workApplyInfoWeb);
|
||||
if (countWorkWeb > 0) {
|
||||
if(workPeopleInfoList != null && workPeopleInfoList.size() > 0){
|
||||
WorkPeopleInfo person = workPeopleInfoList.get(0);
|
||||
String roleIds = person.getRoleIds();
|
||||
String[] roleIdArray = roleIds.split(",");
|
||||
long deptId = sysUser.getDeptId();
|
||||
//根据角色和部门查询用户集合
|
||||
WorkPeopleInfo param = new WorkPeopleInfo();
|
||||
param.setRoleIdArray(roleIdArray);
|
||||
param.setDeptId(deptId);
|
||||
List<WorkPeopleInfo> userList = mapper.selectUserListByRoleAndDept(param);
|
||||
for (WorkPeopleInfo user : userList) {
|
||||
WorkPeopleInfo workPeopleInfo = new WorkPeopleInfo();
|
||||
workPeopleInfo.setId(UUID.randomUUID().toString().replace("-", ""));
|
||||
workPeopleInfo.setInformationId(idWeb);
|
||||
workPeopleInfo.setReceiverUsername(user.getReceiverUsername());
|
||||
workPeopleInfo.setReadState(0);
|
||||
workPeopleInfo.setHandleState(0);
|
||||
workPeopleInfo.setIsExamine(0);
|
||||
mapper.insertWorkPeople(workPeopleInfo);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
/********* information表中塞 web类型的工单 *********/
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -900,10 +900,14 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
peopleInfo.setFlowId(recordId);
|
||||
peopleInfo.setReceiverUsername(userName);
|
||||
|
||||
WorkPeopleInfo info = lMapper.getWorkPeopleInfo(peopleInfo);
|
||||
List<WorkPeopleInfo> infos = lMapper.getWorkPeopleInfo(peopleInfo);
|
||||
if(CollectionUtils.isNotEmpty(infos)){
|
||||
for(WorkPeopleInfo info : infos){
|
||||
peopleInfo.setInformationId(info.getInformationId());
|
||||
lMapper.updateWorkPeopleInfo(peopleInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建工单和工单人员信息
|
||||
|
|
@ -915,6 +919,22 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
* @param newId
|
||||
*/
|
||||
private void createWorkOrderAndPeople(SysUser sysUser, Integer taskId,Integer leaseId,String recordCode,String projectName,int newId) {
|
||||
//查询审批人集合
|
||||
WorkPeopleInfo info = new WorkPeopleInfo();
|
||||
info.setFlowId(newId);
|
||||
|
||||
List<WorkPeopleInfo> workPeopleInfoList = new ArrayList<>();
|
||||
workPeopleInfoList = lMapper.selectWorkPeopleInfoList(info.getFlowId());
|
||||
|
||||
// 过滤掉nextNodeId为null的数据
|
||||
if (workPeopleInfoList != null && workPeopleInfoList.size() > 0) {
|
||||
workPeopleInfoList = workPeopleInfoList.stream()
|
||||
.filter(person -> person.getNextNodeId() != null) // 过滤条件:nextNodeId不为null
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
/********* information表中塞 app类型的工单 *********/
|
||||
String id = UUID.randomUUID().toString().replace("-", "");
|
||||
String webUrlBase = "/mea-h5/#/pages/picking/review/details";
|
||||
String queryParams = UriComponentsBuilder.newInstance()
|
||||
|
|
@ -942,19 +962,6 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
if(information == null){
|
||||
int countWork = lMapper.insertWorkOrder(workApplyInfo);
|
||||
if (countWork > 0) {
|
||||
|
||||
//查询审批人集合
|
||||
WorkPeopleInfo info = new WorkPeopleInfo();
|
||||
info.setFlowId(newId);
|
||||
|
||||
List<WorkPeopleInfo> workPeopleInfoList = new ArrayList<>();
|
||||
workPeopleInfoList = lMapper.selectWorkPeopleInfoList(info.getFlowId());
|
||||
// 过滤掉nextNodeId为null的数据
|
||||
if (workPeopleInfoList != null) {
|
||||
workPeopleInfoList = workPeopleInfoList.stream()
|
||||
.filter(person -> person.getNextNodeId() != null) // 过滤条件:nextNodeId不为null
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
if(workPeopleInfoList != null && workPeopleInfoList.size() > 0){
|
||||
WorkPeopleInfo person = workPeopleInfoList.get(0);
|
||||
String roleIds = person.getRoleIds();
|
||||
|
|
@ -983,6 +990,57 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
|
|||
}
|
||||
}
|
||||
}
|
||||
/********* information表中塞 app类型的工单 *********/
|
||||
WorkApplyInfo workApplyInfoWeb = new WorkApplyInfo();
|
||||
workApplyInfoWeb = workApplyInfo;
|
||||
String idWeb = UUID.randomUUID().toString().replace("-", "");
|
||||
String webUrlBaseWeb = "/mea-view/#/business-details/receive-apply/index";
|
||||
String queryParamsWeb = UriComponentsBuilder.newInstance()
|
||||
.queryParam("appId", "b72d4088a412217dc807bcc3620d4408")
|
||||
.queryParam("taskId", taskId)
|
||||
.queryParam("id", leaseId)
|
||||
.build().encode().toUriString();
|
||||
workApplyInfoWeb.setId(idWeb);
|
||||
workApplyInfoWeb.setTypeId(2025051001);
|
||||
workApplyInfoWeb.setWebAppId("b72d4088a412217dc807bcc3620d4408");
|
||||
workApplyInfoWeb.setWebUrl(webUrlBaseWeb + queryParamsWeb);
|
||||
workApplyInfoWeb.setRout(webUrlBaseWeb + queryParamsWeb);
|
||||
/********* information表中塞 web类型的工单 *********/
|
||||
//判断表中是否已经有该条information数据
|
||||
WorkApplyInfo informationWeb = lMapper.getInformationById(workApplyInfoWeb);
|
||||
if(informationWeb == null){
|
||||
int countWork = lMapper.insertWorkOrder(workApplyInfoWeb);
|
||||
if (countWork > 0) {
|
||||
if(workPeopleInfoList != null && workPeopleInfoList.size() > 0){
|
||||
WorkPeopleInfo person = workPeopleInfoList.get(0);
|
||||
String roleIds = person.getRoleIds();
|
||||
String[] roleIdArray = roleIds.split(",");
|
||||
long deptId = sysUser.getDeptId();
|
||||
//根据角色和部门查询用户集合
|
||||
WorkPeopleInfo param = new WorkPeopleInfo();
|
||||
param.setRoleIdArray(roleIdArray);
|
||||
param.setDeptId(deptId);
|
||||
List<WorkPeopleInfo> userList = lMapper.selectUserListByRoleAndDept(param);
|
||||
if (userList == null || userList.size() == 0) {
|
||||
param.setDeptId(0);
|
||||
userList = lMapper.selectUserListByRoleAndDept(param);
|
||||
}
|
||||
for (WorkPeopleInfo user : userList) {
|
||||
WorkPeopleInfo workPeopleInfo = new WorkPeopleInfo();
|
||||
workPeopleInfo.setId(UUID.randomUUID().toString().replace("-", ""));
|
||||
workPeopleInfo.setInformationId(idWeb);
|
||||
workPeopleInfo.setReceiverUsername(user.getReceiverUsername());
|
||||
workPeopleInfo.setReadState(0);
|
||||
workPeopleInfo.setHandleState(0);
|
||||
workPeopleInfo.setIsExamine(0);
|
||||
lMapper.insertWorkPeople(workPeopleInfo);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
/********* information表中塞 web类型的工单 *********/
|
||||
|
||||
}
|
||||
|
||||
private void createWorkOrderAndPeopleDirect(SysUser sysUser, int proId, int taskId,String taskCode, int newId,int nodeId,List<WorkPeopleInfo> userList) {
|
||||
|
|
|
|||
|
|
@ -1072,8 +1072,6 @@
|
|||
uni_org.sys_information si
|
||||
LEFT JOIN uni_org.sys_information_people sp on si.id = sp.information_id
|
||||
WHERE si.business_id =#{flowId} and sp.receiver_username = #{receiverUsername} and sp.is_examine = 0
|
||||
limit 1
|
||||
|
||||
</select>
|
||||
<select id="selectPublishDetailsByCode" resultType="com.bonus.material.lease.domain.LeasePublishDetails">
|
||||
SELECT id as id,
|
||||
|
|
|
|||
Loading…
Reference in New Issue