fix:修改新增子模具压网接口。新增点检保养接口

main
HuangHuiKang 2 weeks ago
parent 4bca0543fa
commit b96ee62ff9

@ -1,5 +1,10 @@
package cn.iocoder.yudao.module.common.controller.admin.mold.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -105,6 +110,9 @@ public class MoldRespVO {
@Schema(description = "压网时间")
@ExcelProperty("压网时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime pressureNetTime;

@ -21,7 +21,7 @@ import java.util.stream.Collectors;
@Mapper
public interface MoldMapper extends BaseMapperX<MoldDO> {
default PageResult<MoldDO> selectPage(MoldPageReqVO reqVO) {
default LambdaQueryWrapperX<MoldDO> buildQueryWrapper(MoldPageReqVO reqVO) {
LambdaQueryWrapperX<MoldDO> wrapper = new LambdaQueryWrapperX<>();
wrapper
.likeIfPresent(MoldDO::getCode, reqVO.getCode())
@ -55,7 +55,15 @@ public interface MoldMapper extends BaseMapperX<MoldDO> {
if (reqVO.getStatuss() != null && !reqVO.getStatuss().isEmpty()) {
wrapper.in(MoldDO::getStatus, reqVO.getStatuss());
}
return selectPage(reqVO, wrapper);
return wrapper;
}
default PageResult<MoldDO> selectPage(MoldPageReqVO reqVO) {
return selectPage(reqVO, buildQueryWrapper(reqVO));
}
default List<MoldDO> selectList(MoldPageReqVO reqVO) {
return selectList(buildQueryWrapper(reqVO));
}
// 保持原有方法以兼容旧代码

@ -142,8 +142,8 @@ public class MoldBrandController {
@GetMapping("/mold/list")
@Operation(summary = "获得模具列表")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<List<MoldDO>> getMoldList() {
List<MoldDO> moldDOList = moldBrandService.getMoldList();
public CommonResult<List<MoldDO>> getMoldList(@Valid MoldPageReqVO pageReqVO) {
List<MoldDO> moldDOList = moldBrandService.getMoldList(pageReqVO);
return success(moldDOList);
}

@ -1,5 +1,10 @@
package cn.iocoder.yudao.module.erp.controller.admin.mold.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -29,6 +34,9 @@ public class MoldPressureNetRecordSaveReqVO {
@Schema(description = "压网时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "压网时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime pressureNetTime;
@Schema(description = "备注", example = "备注")

@ -9,19 +9,17 @@ import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.ratelimiter.core.annotation.RateLimiter;
import cn.iocoder.yudao.module.common.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.StockInTypeEnum;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
import cn.iocoder.yudao.module.erp.service.mold.MoldService;
import cn.iocoder.yudao.module.erp.service.mold.MoldBrandService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
import cn.iocoder.yudao.module.erp.service.stock.ErpStockInService;
@ -68,7 +66,7 @@ public class ErpStockInController {
private ErpSupplierService supplierService;
@Resource
private MoldService moldService;
private MoldBrandService moldBrandService;
@Resource
private AdminUserApi adminUserApi;
@ -119,14 +117,14 @@ public class ErpStockInController {
}
List<ErpStockInItemDO> stockInItemList = stockInService.getStockInItemListByInId(id);
if (Objects.equals(stockIn.getInType(), "模具入库")) {
Map<Long, MoldRespVO> moldMap = moldService.getMoldVOMap(
Map<Long, MoldBrandDO> moldMap = moldBrandService.getMoldVOMap(
convertSet(stockInItemList, ErpStockInItemDO::getProductId));
return success(BeanUtils.toBean(stockIn, ErpStockInRespVO.class, stockInVO ->
stockInVO.setItems(BeanUtils.toBean(stockInItemList, ErpStockInRespVO.Item.class, item -> {
ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
MapUtils.findAndThen(moldMap, item.getProductId(), mold -> item.setProductName(mold.getName())
.setProductBarCode(mold.getCode()).setProductUnitName(mold.getUnitName()));
.setProductBarCode(mold.getCode()));
}))));
} else {
Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
@ -188,7 +186,7 @@ public class ErpStockInController {
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(pageResult.getList(), stockIn -> Long.parseLong(stockIn.getCreator())));
// 1.7 模具信息
Map<Long, MoldRespVO> moldMap = moldService.getMoldVOMap(
Map<Long, MoldBrandDO> moldMap = moldBrandService.getMoldVOMap(
convertSet(stockInItemList, ErpStockInItemDO::getProductId));
// 2. 开始拼接
@ -196,7 +194,7 @@ public class ErpStockInController {
if (Objects.equals(stockIn.getInType(), "模具入库")) {
stockIn.setItems(BeanUtils.toBean(stockInItemMap.get(stockIn.getId()), ErpStockInRespVO.Item.class,
item -> MapUtils.findAndThen(moldMap, item.getProductId(), mold -> item.setProductName(mold.getName())
.setProductBarCode(mold.getCode()).setProductUnitName(mold.getUnitName()))));
.setProductBarCode(mold.getCode()))));
stockIn.setProductNames(CollUtil.join(stockIn.getItems(), "", ErpStockInRespVO.Item::getProductName));
} else {
stockIn.setItems(BeanUtils.toBean(stockInItemMap.get(stockIn.getId()), ErpStockInRespVO.Item.class,
@ -234,4 +232,4 @@ public class ErpStockInController {
return success(buildStockInVOPageResult(pageResult));
}
}
}

@ -82,6 +82,12 @@ public class ErpStockInRespVO {
@Schema(description = "入库项编号", example = "11756")
private Long id;
@Schema(description = "模具组 ID", example = "1")
private Long moldSetId;
@Schema(description = "模具组名称", example = "A组")
private String moldSetName;
@Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
private Long warehouseId;
@ -111,4 +117,4 @@ public class ErpStockInRespVO {
}
}
}

@ -50,6 +50,9 @@ public class ErpStockInSaveReqVO {
@Schema(description = "入库项编号", example = "11756")
private Long id;
@Schema(description = "模具组 ID模具入库时传入兼容旧前端仍可使用 id 传值)", example = "1")
private Long moldSetId;
@Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
// @NotNull(message = "仓库编号不能为空")
private Long warehouseId;
@ -72,4 +75,4 @@ public class ErpStockInSaveReqVO {
private Long deviceId;
}
}
}

@ -29,6 +29,8 @@ public class ErpStockInItemDO extends BaseDO {
*/
@TableId
private Long id;
private Long moldSetId;
private String moldSetName;
/**
*
*
@ -76,4 +78,4 @@ public class ErpStockInItemDO extends BaseDO {
* {@link ErpProductDO#getId()}
*/
private Long deviceId;
}
}

@ -6,8 +6,10 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldPressureNetRecordPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldPressureNetRecordDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@Mapper
@ -27,12 +29,14 @@ public interface MoldPressureNetRecordMapper extends BaseMapperX<MoldPressureNet
}
default List<MoldPressureNetRecordDO> selectListByMoldIds(Collection<Long> moldIds) {
return selectList(new LambdaQueryWrapperX<MoldPressureNetRecordDO>()
.inIfPresent(MoldPressureNetRecordDO::getMoldId, moldIds)
.orderByDesc(MoldPressureNetRecordDO::getPressureNetTime)
.orderByDesc(MoldPressureNetRecordDO::getId));
if (moldIds == null || moldIds.isEmpty()) {
return Collections.emptyList();
}
return selectLatestListByMoldIds(moldIds);
}
List<MoldPressureNetRecordDO> selectLatestListByMoldIds(@Param("moldIds") Collection<Long> moldIds);
default List<MoldPressureNetRecordDO> selectListByMoldBrandIds(Collection<Long> moldBrandIds) {
return selectList(new LambdaQueryWrapperX<MoldPressureNetRecordDO>()
.inIfPresent(MoldPressureNetRecordDO::getMoldBrandId, moldBrandIds)

@ -96,7 +96,7 @@ public interface MoldBrandService {
*/
PageResult<MoldRespVO> getMoldPage(MoldPageReqVO pageReqVO);
List<MoldDO> getMoldList();
List<MoldDO> getMoldList(MoldPageReqVO pageReqVO);
/**
*

@ -25,6 +25,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldBrandRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldBrandStatusStatisticsRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldBrandTreeRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldOperateSimpleDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldPressureNetRecordDO;
import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldOperateQueryMapper;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
@ -448,8 +449,8 @@ public class MoldBrandServiceImpl implements MoldBrandService {
}
@Override
public List<MoldDO> getMoldList() {
return moldMapper.selectList();
public List<MoldDO> getMoldList(MoldPageReqVO pageReqVO) {
return moldMapper.selectList(pageReqVO);
}
private List<MoldRespVO> buildMoldVOList(List<MoldDO> list) {
@ -474,9 +475,9 @@ public class MoldBrandServiceImpl implements MoldBrandService {
if (CollUtil.isEmpty(moldIds)) {
return Collections.emptyMap();
}
List<cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldPressureNetRecordDO> records = moldPressureNetRecordMapper.selectListByMoldIds(moldIds);
List<MoldPressureNetRecordDO> records = moldPressureNetRecordMapper.selectListByMoldIds(moldIds);
Map<Long, LocalDateTime> result = new HashMap<>();
for (cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldPressureNetRecordDO record : records) {
for (MoldPressureNetRecordDO record : records) {
if (record.getMoldId() != null && !result.containsKey(record.getMoldId())) {
result.put(record.getMoldId(), record.getPressureNetTime());
}

@ -4,11 +4,10 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.common.controller.admin.mold.vo.MoldSaveReqVO;
import cn.iocoder.yudao.module.common.controller.admin.mold.vo.MoldBrandSaveReqVO;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
@ -21,7 +20,6 @@ import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
import cn.iocoder.yudao.module.erp.service.mold.MoldBrandService;
import cn.iocoder.yudao.module.erp.service.mold.MoldService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
@ -61,9 +59,6 @@ public class ErpStockInServiceImpl implements ErpStockInService {
@Resource
private ErpProductService productService;
@Resource
private MoldService moldService;
@Resource
private ErpWarehouseService warehouseService;
@Resource
private ErpSupplierService supplierService;
@ -158,9 +153,9 @@ public class ErpStockInServiceImpl implements ErpStockInService {
stockInItems.forEach(stockInItem -> {
BigDecimal count = approve ? stockInItem.getCount() : stockInItem.getCount().negate();
if (Objects.equals(stockIn.getInType(), "模具入库")) {
MoldDO moldDO = moldService.getMold(stockInItem.getProductId());
MoldBrandDO moldDO = moldBrandService.getMoldBrand(stockInItem.getProductId());
stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
stockInItem.getProductId(),moldDO.getBrandId(), stockInItem.getWarehouseId(), count,
stockInItem.getProductId(), moldDO.getId(), stockInItem.getWarehouseId(), count,
ErpStockRecordBizTypeEnum.OTHER_IN.getType(), stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(), stockIn.getInTime()));
} else {
ErpProductDO productDO = productService.getProduct(stockInItem.getProductId());
@ -180,7 +175,7 @@ public class ErpStockInServiceImpl implements ErpStockInService {
if (Objects.equals(stockIn.getInType(), "模具入库")) {
for (ErpStockInItemDO item : stockInItems) {
if (item.getProductId() != null) {
MoldDO moldDO = moldService.getMold(item.getProductId());
MoldBrandDO moldDO = moldBrandService.getMoldBrand(item.getProductId());
// 已经在库
if (Objects.equals(moldDO.getStatus(), 1)) {
@ -188,7 +183,7 @@ public class ErpStockInServiceImpl implements ErpStockInService {
}
moldDO.setStatus(1); // 在库
moldService.updateMold(BeanUtils.toBean(moldDO, MoldSaveReqVO.class));
moldBrandService.updateMoldBrand(BeanUtils.toBean(moldDO, MoldBrandSaveReqVO.class));
}
}
@ -202,14 +197,17 @@ public class ErpStockInServiceImpl implements ErpStockInService {
// convertSet(list, ErpStockInSaveReqVO.Item::getProductId));
// Map<Long, MoldDO> moldMap = convertMap(moldList, MoldDO::getId);
List<MoldBrandDO> moldList = moldBrandService.validMoldList(
convertSet(list, ErpStockInSaveReqVO.Item::getProductId));
convertSet(list, ErpStockInSaveReqVO.Item::getId));
Map<Long, MoldBrandDO> moldMap = convertMap(moldList, MoldBrandDO::getId);
List<ErpProductDO> productList = productService.validProductList(
convertSet(moldList, MoldBrandDO::getProductId));
Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
// 1.2 校验仓库存在
// warehouseService.validWarehouseList(convertSet(
// list, ErpStockInSaveReqVO.Item::getWarehouseId));
// 2. 转化为 ErpStockInItemDO 列表
return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item
// .setProductUnitId(moldMap.get(item.getProductId()).getUnitId())
.setProductUnitId(productMap.get(item.getProductId()).getUnitId())
.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()))));
} else {
@ -303,4 +301,4 @@ public class ErpStockInServiceImpl implements ErpStockInService {
return stockInItemMapper.selectListByInIds(inIds);
}
}
}

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldPressureNetRecordMapper">
<select id="selectLatestListByMoldIds" resultType="cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldPressureNetRecordDO">
SELECT *
FROM erp_mold_pressure_net_record
WHERE id IN (
SELECT MAX(id)
FROM erp_mold_pressure_net_record
WHERE deleted = 0
and mold_id IN
<foreach collection="moldIds" item="moldId" open="(" separator="," close=")">
#{moldId}
</foreach>
GROUP BY mold_id
)
ORDER BY id DESC
</select>
</mapper>

@ -137,6 +137,14 @@ public class MoldTaskManagementController {
return success(true);
}
@PostMapping("/createMoldTicketDirect")
@Operation(summary = "直接创建工单管理")
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:create')")
public CommonResult<Boolean> createTicketDirect(@Valid @RequestBody MoldTaskManagementCreateTicketReqVO createReqVO) {
moldtaskManagementService.createMoldTicketDirect(createReqVO);
return success(true);
}
private PageResult<MoldTaskManagementRespVO> buildPageCreatorName(PageResult<MoldTaskManagementRespVO> planMaintenanceRespVOPageResult) {
for (MoldTaskManagementRespVO planMaintenanceRespVO : planMaintenanceRespVOPageResult.getList()) {
@ -149,4 +157,4 @@ public class MoldTaskManagementController {
return planMaintenanceRespVOPageResult;
}
}
}

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 模具任务管理直接创建工单 Request VO")
@Data
public class MoldTaskManagementCreateTicketReqVO {
@Schema(description = "id", example = "26348")
private Long id;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试任务")
@NotBlank(message = "名称不能为空")
private String name;
@Schema(description = "类型(1-点检 2-保养)", example = "2")
private Integer taskType;
@Schema(description = "模具列表", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "模具列表不能为空")
private String moldList;
@Schema(description = "项目表单", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "项目表单不能为空")
private Long projectForm;
@Schema(description = "起止开始日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private String startDate;
@Schema(description = "起止结束日期", requiredMode = Schema.RequiredMode.REQUIRED)
@JsonFormat(pattern = "yyyy-MM-dd")
// @NotBlank(message = "起止结束日期不能为空")
private String endDate;
@Schema(description = "cron表达式")
private String cronExpression;
@Schema(description = "可操作人")
private String operableUsers;
@Schema(description = "是否启用")
private Boolean enabled;
}

@ -53,4 +53,6 @@ public interface MoldTaskManagementService {
PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManagementPageReqVO pageReqVO);
void createMoldTicket(Long id);
}
void createMoldTicketDirect(@Valid MoldTaskManagementCreateTicketReqVO createReqVO);
}

@ -1,49 +1,42 @@
package cn.iocoder.yudao.module.mes.service.moldtaskmanagement;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.common.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.module.common.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.module.common.dal.mysql.mold.MoldBrandMapper;
import cn.iocoder.yudao.module.common.dal.mysql.mold.MoldMapper;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import cn.iocoder.yudao.module.common.dal.mysql.moldticketmanagement.MoldTicketManagementMapper;
import cn.iocoder.yudao.module.common.dal.mysql.moldticketresults.MoldTicketResultsMapper;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTaskManagementCreateTicketReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTaskManagementPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTaskManagementSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement.MoldTaskManagementDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
import cn.iocoder.yudao.module.common.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.module.common.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.mes.dal.mysql.moldsubject.MoldSubjectMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldplanmaintenance.MoldPlanMaintenanceMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldsubject.MoldSubjectMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldtaskmanagement.MoldTaskManagementMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.subjectmoldplan.SubjectMoldPlanMapper;
import cn.iocoder.yudao.module.common.dal.mysql.moldticketmanagement.MoldTicketManagementMapper;
import cn.iocoder.yudao.module.common.dal.mysql.moldticketresults.MoldTicketResultsMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement.MoldTaskManagementDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.moldtaskmanagement.MoldTaskManagementMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
import org.springframework.util.CollectionUtils;
import lombok.extern.slf4j.Slf4j;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.TASK_MANAGEMENT_NOT_EXISTS;
/**
* Service
*
* @author
*/
@Service
@Slf4j
@Validated
@ -51,53 +44,38 @@ public class MoldTaskManagementServiceImpl implements MoldTaskManagementService
@Resource
private MoldTaskManagementMapper moldtaskManagementMapper;
@Resource
private MoldTicketManagementMapper moldticketManagementMapper;
@Resource
private MoldTicketResultsMapper moldticketResultsMapper;
@Resource
private MoldMapper moldMapper;
@Resource
private MoldBrandMapper moldBrandMapper;
@Resource
private MoldPlanMaintenanceMapper moldplanMaintenanceMapper;
@Resource
private SubjectMoldPlanMapper subjectmoldPlanMapper;
@Resource
private MoldSubjectMapper moldSubjectMapper;
@Override
public Long createMoldTaskManagement(MoldTaskManagementSaveReqVO createReqVO) {
// 插入
MoldTaskManagementDO moldtaskManagement = BeanUtils.toBean(createReqVO, MoldTaskManagementDO.class);
moldtaskManagementMapper.insert(moldtaskManagement);
// 返回
return moldtaskManagement.getId();
}
@Override
public void updateMoldTaskManagement(MoldTaskManagementSaveReqVO updateReqVO) {
// 校验存在
validateMoldTaskManagementExists(updateReqVO.getId());
// 更新
MoldTaskManagementDO updateObj = BeanUtils.toBean(updateReqVO, MoldTaskManagementDO.class);
moldtaskManagementMapper.updateById(updateObj);
}
@Override
public void deleteMoldTaskManagement(List<Long> idList ) {
public void deleteMoldTaskManagement(List<Long> idList) {
for (Long id : idList) {
// 校验存在
validateMoldTaskManagementExists(id);
}
// 删除
moldtaskManagementMapper.deleteByIds(idList);
}
@ -112,89 +90,73 @@ public class MoldTaskManagementServiceImpl implements MoldTaskManagementService
return moldtaskManagementMapper.selectById(id);
}
// @Override
// public PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManagementPageReqVO pageReqVO) {
//
// PageResult<MoldTaskManagementDO> moldtaskManagementDOPageResult = moldtaskManagementMapper.selectPage(pageReqVO);
// for (MoldTaskManagementDO moldtaskManagementDO : moldtaskManagementDOPageResult.getList()) {
// MoldPlanMaintenanceDO moldplanMaintenanceDO = moldplanMaintenanceMapper.selectById(moldtaskManagementDO.getProjectForm());
// moldtaskManagementDO.setProjectFormName(moldplanMaintenanceDO.getPlanName());
// }
//
//
// return moldtaskManagementDOPageResult;
// }
@Override
public PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManagementPageReqVO pageReqVO) {
// 1. 查询分页数据
PageResult<MoldTaskManagementDO> moldtaskManagementDOPageResult = moldtaskManagementMapper.selectPage(pageReqVO);
// 2. 空列表直接返回,避免遍历空指针
if (CollectionUtils.isEmpty(moldtaskManagementDOPageResult.getList())) {
return moldtaskManagementDOPageResult;
}
// 3. 遍历处理每条数据,添加全量空值校验
for (MoldTaskManagementDO moldtaskManagementDO : moldtaskManagementDOPageResult.getList()) {
// 3.1 校验关联的维保计划IDprojectForm非空
Long projectFormId = moldtaskManagementDO.getProjectForm();
if (projectFormId == null) {
log.warn("模具任务{}的维保计划ID为空跳过计划名称填充", moldtaskManagementDO.getId());
moldtaskManagementDO.setProjectFormName("无维保计划"); // 兜底默认值
continue;
@Override
public PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManagementPageReqVO pageReqVO) {
PageResult<MoldTaskManagementDO> pageResult = moldtaskManagementMapper.selectPage(pageReqVO);
if (CollectionUtils.isEmpty(pageResult.getList())) {
return pageResult;
}
// 3.2 查询维保计划
MoldPlanMaintenanceDO moldplanMaintenanceDO = moldplanMaintenanceMapper.selectById(projectFormId);
// 3.3 校验查询结果非空
if (moldplanMaintenanceDO == null) {
log.warn("模具任务{}关联的维保计划{}不存在", moldtaskManagementDO.getId(), projectFormId);
moldtaskManagementDO.setProjectFormName("维保计划不存在"); // 兜底
} else {
// 3.4 正常赋值确保planName非空避免空字符串
String planName = moldplanMaintenanceDO.getPlanName();
moldtaskManagementDO.setProjectFormName(planName == null ? "未命名维保计划" : planName);
for (MoldTaskManagementDO moldtaskManagementDO : pageResult.getList()) {
Long projectFormId = moldtaskManagementDO.getProjectForm();
if (projectFormId == null) {
log.warn("模具任务{}的维保计划ID为空跳过计划名称填充", moldtaskManagementDO.getId());
moldtaskManagementDO.setProjectFormName("无维保计划");
continue;
}
MoldPlanMaintenanceDO moldplanMaintenanceDO = moldplanMaintenanceMapper.selectById(projectFormId);
if (moldplanMaintenanceDO == null) {
log.warn("模具任务{}关联的维保计划{}不存在", moldtaskManagementDO.getId(), projectFormId);
moldtaskManagementDO.setProjectFormName("维保计划不存在");
} else {
String planName = moldplanMaintenanceDO.getPlanName();
moldtaskManagementDO.setProjectFormName(planName == null ? "未命名维保计划" : planName);
}
}
return pageResult;
}
// 4. 返回处理后的结果
return moldtaskManagementDOPageResult;
}
@Override
public void createMoldTicket(Long id) {
List<MoldTicketManagementDO> moldticketManagementDOS = new ArrayList<>();
//检验数据是否存在
validateMoldTaskManagementExists(id);
MoldTaskManagementDO moldtaskManagementDO = moldtaskManagementMapper.selectById(id);
if (moldtaskManagementDO == null){
if (moldtaskManagementDO == null) {
throw exception(TASK_MANAGEMENT_NOT_EXISTS);
}
createMoldTicketInternal(moldtaskManagementDO.getId(), moldtaskManagementDO.getProjectForm(),
moldtaskManagementDO.getTaskType(), moldtaskManagementDO.getName(),
moldtaskManagementDO.getEndDate(), moldtaskManagementDO.getMoldList());
}
@Override
public void createMoldTicketDirect(MoldTaskManagementCreateTicketReqVO createReqVO) {
createMoldTicketInternal(createReqVO.getId(), createReqVO.getProjectForm(), createReqVO.getTaskType(),
createReqVO.getName(), createReqVO.getEndDate()!=null?LocalDate.parse(createReqVO.getEndDate()):null, createReqVO.getMoldList());
}
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(moldtaskManagementDO.getMoldList().split(","))
.map(String::trim) // 去除可能存在的空格
private void createMoldTicketInternal(Long taskId, Long planId, Integer taskType, String configName,
LocalDate endDate, String moldList) {
List<Long> moldIds = Arrays.stream(moldList.split(","))
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
for (Long moldId : moldIds) {
MoldBrandDO moldDO = moldBrandMapper.selectById(moldId);
for (Long moldId : idList) {
MoldTicketManagementDO moldticketManagementDO = new MoldTicketManagementDO();
MoldBrandDO moldDO = moldBrandMapper.selectById(moldId);
moldticketManagementDO.setTaskId(moldtaskManagementDO.getId());
moldticketManagementDO.setTaskId(taskId);
moldticketManagementDO.setPlanNo(generatePrefixedOrderNo());
moldticketManagementDO.setPlanId(moldtaskManagementDO.getProjectForm());
moldticketManagementDO.setPlanId(planId);
moldticketManagementDO.setMoldName(moldDO.getName());
moldticketManagementDO.setPlanType(moldtaskManagementDO.getTaskType());
moldticketManagementDO.setConfigName(moldtaskManagementDO.getName());
moldticketManagementDO.setTaskEndTime(moldtaskManagementDO.getEndDate().atStartOfDay());
moldticketManagementDO.setPlanType(taskType);
moldticketManagementDO.setConfigName(configName);
moldticketManagementDO.setTaskEndTime(endDate !=null ? endDate.atStartOfDay(): null);
moldticketManagementMapper.insert(moldticketManagementDO);
List<MoldSubjectDO> moldSubjectDOList = new ArrayList<>();
List<SubjectMoldPlanDO> subjectmoldPlanDOList = subjectmoldPlanMapper.selectList(Wrappers.<SubjectMoldPlanDO>lambdaQuery().eq(SubjectMoldPlanDO::getPlanId, moldticketManagementDO.getPlanId()));
List<SubjectMoldPlanDO> subjectmoldPlanDOList = subjectmoldPlanMapper.selectList(
Wrappers.<SubjectMoldPlanDO>lambdaQuery().eq(SubjectMoldPlanDO::getPlanId, planId));
for (SubjectMoldPlanDO subjectmoldPlanDO : subjectmoldPlanDOList) {
MoldSubjectDO moldSubjectDO = moldSubjectMapper.selectById(subjectmoldPlanDO.getSubjectId());
@ -207,19 +169,13 @@ public PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManage
moldticketResultsDO.setValueType(moldSubjectDO.getValueType());
moldticketResultsMapper.insert(moldticketResultsDO);
}
}
}
/**
*
*/
public static String generatePrefixedOrderNo() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String date = sdf.format(new Date());
String randomNum = String.format("%06d", new Random().nextInt(1000000));
return "E" + date + randomNum;
}
}
}

Loading…
Cancel
Save