add repoert

plp
chenshuichuan 2 years ago
parent dd86c35c44
commit c5bdc5524f

@ -6,12 +6,15 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDetailDO;
import cn.iocoder.yudao.module.mes.service.producereport.ProduceReportService;
import cn.iocoder.yudao.module.mes.service.workteam.WorkTeamService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -26,9 +29,11 @@ import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@Tag(name = "管理后台 - 生产报工单")
@RestController
@ -82,10 +87,31 @@ public class ProduceReportController {
@Operation(summary = "获得生产报工单分页")
@PreAuthorize("@ss.hasPermission('mes:produce-report:query')")
public CommonResult<PageResult<ProduceReportRespVO>> getProduceReportPage(@Valid ProduceReportPageReqVO pageReqVO) {
PageResult<ProduceReportDO> pageResult = produceReportService.getProduceReportPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProduceReportRespVO.class));
return success(new PageResult<>(produceReportService.buildVOList(pageResult.getList()),pageResult.getTotal()));
}
@Resource
private WorkTeamService workTeamService;
@GetMapping("/pageReplace")
@Operation(summary = "获得生产报工单分页-代报工")
@PreAuthorize("@ss.hasPermission('mes:produce-report:query')")
public CommonResult<PageResult<ProduceReportRespVO>> getProduceReportPageReplace(@Valid ProduceReportPageReqVO pageReqVO) {
Long userId = getLoginUserId();
WorkTeamDO workTeamDO = new WorkTeamDO().setTeamLeaderId(userId);
List<WorkTeamDO> listTeam = workTeamService.selectBy(workTeamDO);
List<Long> idList = listTeam.stream()
.map(WorkTeamDO::getId)
.collect(Collectors.toList());
List<WorkTeamDetailDO> detailDOList = workTeamService.getDetailByWorkTeamIds(idList);
List<Long> userList = detailDOList.stream()
.map(WorkTeamDetailDO::getUserId)
.collect(Collectors.toList());
pageReqVO.setUserIds(userList);
PageResult<ProduceReportDO> pageResult = produceReportService.getProduceReportPage(pageReqVO);
return success(new PageResult<>(produceReportService.buildVOList(pageResult.getList()),pageResult.getTotal()));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产报工单 Excel")
@PreAuthorize("@ss.hasPermission('mes:produce-report:export')")
@ -94,19 +120,20 @@ public class ProduceReportController {
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProduceReportDO> list = produceReportService.getProduceReportPage(pageReqVO).getList();
List<ProduceReportRespVO> list2 = produceReportService.buildVOList(list);
// 导出 Excel
ExcelUtils.write(response, "生产报工单.xls", "数据", ProduceReportRespVO.class,
BeanUtils.toBean(list, ProduceReportRespVO.class));
ExcelUtils.write(response, "生产计时报表.xls", "数据", ProduceReportRespVO.class,
list2);
}
// ==================== 子表(生产报工明细) ====================
// ==================== 子表(生产报工明细) ====================\
@GetMapping("/produce-report-detail/list-by-report-id")
@Operation(summary = "获得生产报工明细列表")
@Parameter(name = "reportId", description = "报工单id")
@PreAuthorize("@ss.hasPermission('mes:produce-report:query')")
public CommonResult<List<ProduceReportDetailDO>> getProduceReportDetailListByReportId(@RequestParam("reportId") Long reportId) {
return success(produceReportService.getProduceReportDetailListByReportId(reportId));
public CommonResult<List<ProduceReportDetailRespVO>> getProduceReportDetailListByReportId(@RequestParam("reportId") Long reportId) {
return success(produceReportService.getDetailListByReportId(reportId));
}
@GetMapping("/updateStatus")
@Operation(summary = "提交报工单")

@ -105,7 +105,7 @@ public class ProduceReportDetailController {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProduceReportDetailRespVO> list = produceReportDetailService.getProduceReportDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产报工明细.xls", "数据", ProduceReportDetailRespVO.class,
ExcelUtils.write(response, "生产计件报表.xls", "数据", ProduceReportDetailRespVO.class,
list);
}

@ -1,12 +1,15 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -59,4 +62,5 @@ public class ProduceReportPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] reportDate;
private List<Long> userIds;
}

@ -1,15 +1,14 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import lombok.Data;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 生产报工单 Response VO")
@Data
@ -19,22 +18,26 @@ public class ProduceReportRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29099")
@ExcelProperty("ID")
private Long id;
@Schema(description = "流程实例编号", example = "12049")
@ExcelProperty("流程实例编号")
private String processInstanceId;
@Schema(description = "编号")
@ExcelProperty("编号")
private String reportCode;
@Schema(description = "报工日期")
@ExcelProperty("报工日期")
private LocalDateTime reportDate;
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19983")
@ExcelProperty("用户ID")
private Long userId;
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19983")
@ExcelProperty("用户")
private String userName;
@Schema(description = "工序ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28795")
@ExcelProperty("工序ID")
private Long orgId;
@Schema(description = "工位", requiredMode = Schema.RequiredMode.REQUIRED, example = "28795")
@ExcelProperty("工位")
private String orgName;
@Schema(description = "工序", example = "2")
@ExcelProperty(value = "工序", converter = DictConvert.class)
@ -72,8 +75,5 @@ public class ProduceReportRespVO {
@DictFormat("mes_produce_report_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String reportType;
@Schema(description = "报工日期")
@ExcelProperty("报工日期")
private LocalDateTime reportDate;
}

@ -1,13 +1,11 @@
package cn.iocoder.yudao.module.mes.dal.mysql.producereport;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
/**
* Mapper
@ -32,6 +30,7 @@ public interface ProduceReportMapper extends BaseMapperX<ProduceReportDO> {
.eqIfPresent(ProduceReportDO::getGroupType, reqVO.getGroupType())
.eqIfPresent(ProduceReportDO::getReportType, reqVO.getReportType())
.betweenIfPresent(ProduceReportDO::getReportDate, reqVO.getReportDate())
.inIfPresent(ProduceReportDO::getUserId, reqVO.getUserIds())
.orderByDesc(ProduceReportDO::getId));
}

@ -41,8 +41,8 @@ public interface WorkTeamDetailMapper extends BaseMapperX<WorkTeamDetailDO> {
.eqIfPresent(WorkTeamDetailDO::getUserRole, userRole)
.eqIfPresent(WorkTeamDetailDO::getUserId, workerId));
}
default List<WorkTeamDetailDO> getDetailByWorkTeamIds(List<Long> workerIds){
default List<WorkTeamDetailDO> getDetailByWorkTeamIds(List<Long> workTeamIds){
return selectList(new LambdaQueryWrapperX<WorkTeamDetailDO>()
.in(workerIds!=null&& workerIds.size()>0,WorkTeamDetailDO::getWorkTeamId, workerIds));
.in(workTeamIds!=null&& workTeamIds.size()>0,WorkTeamDetailDO::getWorkTeamId, workTeamIds));
}
}

@ -127,8 +127,6 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
@Resource
private ErpProductService productService;
@Resource
private ProduceReportService reportService;
@Resource
private PlanService planService;
@Resource
private WorkReportPlanService workReportPlanService;

@ -1,7 +1,9 @@
package cn.iocoder.yudao.module.mes.service.producereport;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
@ -53,7 +55,7 @@ public interface ProduceReportService {
* @return
*/
PageResult<ProduceReportDO> getProduceReportPage(ProduceReportPageReqVO pageReqVO);
List<ProduceReportRespVO> buildVOList(List<ProduceReportDO> list);
// ==================== 子表(生产报工明细) ====================
/**
@ -63,5 +65,6 @@ public interface ProduceReportService {
* @return
*/
List<ProduceReportDetailDO> getProduceReportDetailListByReportId(Long reportId);
List<ProduceReportDetailRespVO> getDetailListByReportId(Long reportId);
void updateStatus(Long id, Integer status);
}

@ -1,24 +1,31 @@
package cn.iocoder.yudao.module.mes.service.producereport;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.changerecord.vo.ChangeTypeEnum;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ReportStatusEnum;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportDetailMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportMapper;
import cn.iocoder.yudao.module.mes.service.changerecord.ProduceReportChangeRecordService;
import cn.iocoder.yudao.module.mes.service.organization.OrganizationService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRODUCE_REPORT_NOT_EXISTS;
/**
@ -34,6 +41,14 @@ public class ProduceReportServiceImpl implements ProduceReportService {
private ProduceReportMapper produceReportMapper;
@Resource
private ProduceReportDetailMapper produceReportDetailMapper;
@Resource
private OrganizationService organizationService;
@Resource
private AdminUserApi adminUserApi;
@Resource
private ProduceReportChangeRecordService produceReportChangeRecordService;
@Resource
private ProduceReportDetailService produceReportDetailService;
@Override
@Transactional(rollbackFor = Exception.class)
@ -89,17 +104,41 @@ public class ProduceReportServiceImpl implements ProduceReportService {
return produceReportMapper.selectPage(pageReqVO);
}
@Override
public List<ProduceReportRespVO> buildVOList(List<ProduceReportDO> list){
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, OrganizationDO> map = organizationService.getMap(
convertSet(list, ProduceReportDO::getOrgId));
// 1.4 管理员信息
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(list, ProduceReportDO::getUserId));
return BeanUtils.toBean(list, ProduceReportRespVO.class, item -> {
MapUtils.findAndThen(map, item.getOrgId(),
org -> item.setOrgName(org.getName())
);
MapUtils.findAndThen(userMap, item.getUserId(),
user -> item.setUserName(user.getNickname()));
});
}
// ==================== 子表(生产报工明细) ====================
@Override
public List<ProduceReportDetailDO> getProduceReportDetailListByReportId(Long reportId) {
return produceReportDetailMapper.selectListByReportId(reportId);
}
@Override
public List<ProduceReportDetailRespVO> getDetailListByReportId(Long reportId) {
List<ProduceReportDetailDO> list = produceReportDetailMapper.selectListByReportId(reportId);
return produceReportDetailService.buildVOList(list);
}
private void createProduceReportDetailList(ProduceReportDO reportDO, List<ProduceReportDetailDO> list) {
list.forEach(o -> o.setReportId(reportDO.getId()).setReportStatus(reportDO.getReportStatus())
.setReportDate(reportDO.getReportDate()).setGroupType(reportDO.getGroupType())
.setOrgId(reportDO.getOrgId()).setOrgType(reportDO.getOrgType())
.setUserId(reportDO.getUserId())
);
produceReportDetailMapper.insertBatch(list);
}
@ -109,6 +148,7 @@ public class ProduceReportServiceImpl implements ProduceReportService {
list.forEach(o -> o.setId(null).setReportStatus(reportDO.getReportStatus())
.setReportDate(reportDO.getReportDate()).setGroupType(reportDO.getGroupType())
.setOrgId(reportDO.getOrgId()).setOrgType(reportDO.getOrgType())
.setUserId(reportDO.getUserId())
.setUpdater(null).setUpdateTime(null)
); // 解决更新情况下1id 冲突2updateTime 不更新
createProduceReportDetailList(reportDO, list);
@ -117,15 +157,10 @@ public class ProduceReportServiceImpl implements ProduceReportService {
private void deleteProduceReportDetailByReportId(Long reportId) {
produceReportDetailMapper.deleteByReportId(reportId);
}
@Resource
private ProduceReportChangeRecordService produceReportChangeRecordService;
@Resource
private ProduceReportDetailService reportDetailService;
@Override
@Transactional
public void updateStatus(Long id, Integer status) {
// ProduceReportDO reportDO = produceReportMapper.selectById(id);
// if(reportDO==null) throw exception(PRODUCE_REPORT_NOT_EXISTS);
if(status.equals(ReportStatusEnum..getValue())){
produceReportChangeRecordService.saveChange(id,"", "", ChangeTypeEnum..getValue());
}
@ -133,7 +168,7 @@ public class ProduceReportServiceImpl implements ProduceReportService {
produceReportChangeRecordService.saveChange(id, "", "", ChangeTypeEnum..getValue());
List<ProduceReportDetailDO> list = getProduceReportDetailListByReportId(id);
for (ProduceReportDetailDO detail: list) {
reportDetailService.updateStatus2(detail,status);
produceReportDetailService.updateStatus2(detail,status);
}
}
}

@ -90,7 +90,7 @@ public interface WorkTeamService {
* @param id
*/
void deleteWorkTeamDetail(Long id);
List<WorkTeamDO> selectBy(WorkTeamDO detailDO);
/**
*
*

@ -185,7 +185,10 @@ public class WorkTeamServiceImpl implements WorkTeamService {
// 删除
workTeamDetailMapper.deleteById(id);
}
@Override
public List<WorkTeamDO> selectBy(WorkTeamDO detailDO){
return workTeamMapper.selectBy(detailDO);
}
@Override
public WorkTeamDetailDO getWorkTeamDetail(Long id) {
return workTeamDetailMapper.selectById(id);

Loading…
Cancel
Save