新增排单-是否混单判断更改,未排单-板材查询参数更改,优化生产,保存优化结果异常提示补全,

This commit is contained in:
liuzhaotian
2025-01-16 17:22:00 +08:00
parent 9b156e51bb
commit 166ebf430a
14 changed files with 91 additions and 74 deletions
@@ -85,7 +85,7 @@ public class OrderPageReqVOCopy extends PageParam {
@Schema(description = "商品ID-板材库对应的大板ID-由板材查询生产单时传") @Schema(description = "商品ID-板材库对应的大板ID-由板材查询生产单时传")
// @Size(max = 20,message = "最多可同时查询20个板材") // @Size(max = 20,message = "最多可同时查询20个板材")
private List<String> goodsId; private List<String> goodsIds;
@Schema(description = "排单ID-修改排单时为必传条件") @Schema(description = "排单ID-修改排单时为必传条件")
private Long planId; private Long planId;
@@ -18,10 +18,6 @@ public class PlanSaveReqVO {
private Long id; private Long id;
@Schema(description = "是否开启混单", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isMix;
@Schema(description = "排单状态:0 未开料,1 开料中,2 已开料,3 已投产") @Schema(description = "排单状态:0 未开料,1 开料中,2 已开料,3 已投产")
// @NotNull(message = "排单状态:0 未开料,1 已投产,2 开料中,3 已开料", groups = UpdateGroup.class) // @NotNull(message = "排单状态:0 未开料,1 已投产,2 开料中,3 已开料", groups = UpdateGroup.class)
@PlanStatusValid @PlanStatusValid
@@ -234,25 +234,6 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
List<OrderDO> selectOrderDataSource(@Param("filed") String filed,@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId); List<OrderDO> selectOrderDataSource(@Param("filed") String filed,@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
default List<OrderDO> selectOrderIdsList(OrderPageReqVOCopy pageReqVO, List<Integer> statusList, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderDO>()
.eqIfPresent(OrderDO::getOrganId, organId)
.eq(OrderDO::getDeleted, false)
.in(OrderDO::getStatus,statusList)
.likeIfPresent(OrderDO::getId,pageReqVO.getOrderId() != null ? pageReqVO.getOrderId() : null)
.inIfPresent(OrderDO::getId,pageReqVO.getOrderIds())
.likeIfPresent(OrderDO::getCustomOrderNo,pageReqVO.getDefaultId())
.likeIfPresent(OrderDO::getCustomer,pageReqVO.getConsignee())
.likeIfPresent(OrderDO::getAddress,pageReqVO.getConsigneeAddress())
.betweenIfPresent(OrderDO::getOrderDate,pageReqVO.getCreateTime())
.select(OrderDO::getId));
}
List<OrderGoodsResp> selectGoodsListByGoodsId(@Param(Constants.WRAPPER) QueryWrapperX<OrderDO> queryWrapperX); List<OrderGoodsResp> selectGoodsListByGoodsId(@Param(Constants.WRAPPER) QueryWrapperX<OrderDO> queryWrapperX);
@@ -1,9 +1,7 @@
package com.cf.imes.module.executor.dal.mysql.pack; package com.cf.imes.module.executor.dal.mysql.pack;
import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO; import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -16,12 +14,4 @@ public interface OrderPackageMapper extends BaseMapperX<OrderPackageDO> {
void updatePackList(@Param("orderId") Long orderId, @Param("packIds") List<Long> packIds, @Param("organId") Long organId); void updatePackList(@Param("orderId") Long orderId, @Param("packIds") List<Long> packIds, @Param("organId") Long organId);
default List<OrderPackageDO> selectPackStatusList(Long orderId,Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getDeleted,false)
.eq(OrderPackageDO::getStatus, OrderPackageStatusEnum.PACKAGED.getStatus())
.eqIfPresent(OrderPackageDO::getOrderId, orderId));
}
} }
@@ -176,7 +176,7 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
List<PlateDetailRespVO> selectPlateListByGoodsIds(@Param("orderIds") List<Long> orderIds,@Param("goodsIdList") List<Long> goodsIdList, @Param("organId") Long organId); List<PlateDetailRespVO> selectPlateListByGoodsIds(@Param("orderIds") List<Long> orderIds,@Param("goodsIdList") List<Long> goodsIdList, @Param("organId") Long organId);
List<PlateDetailRespVO> selectNoPlanPlate(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId); List<PlateDetailRespVO> selectNoPlanPlate(@Param("orderIds") List<Long> orderIds, @Param("ids") List<Long> ids, @Param("organId") Long organId);
// 批量删除 // 批量删除
@@ -669,9 +669,25 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
AssertUtils.notEmpty(actualGoodsLists,PLAN_NO_ACTUAL_PLATE); AssertUtils.notEmpty(actualGoodsLists,PLAN_NO_ACTUAL_PLATE);
// 先根据排单查找是否有优化数据,如果有,删除
Long planId = boardModelDO.getPlanId(); Long planId = boardModelDO.getPlanId();
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
// 删除原来的优化信息
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
Boolean isLock = Optional.ofNullable(optimizeBoardModelDO.getIsLock()).orElse(false);
if(Boolean.TRUE.equals(isLock)){
throw exception(THIS_PLAN_IS_LOCK);
}
esUtils.deleteEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(),planId,ORDER_OPTIMIZE_PLATE_MODEL);
}
List<PlateDO> plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId()); List<PlateDO> plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId());
@@ -683,13 +699,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
plateMapper.updateBatch(plateDOS); plateMapper.updateBatch(plateDOS);
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
// 删除原来的优化信息
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
esUtils.deleteEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(),planId,ORDER_OPTIMIZE_PLATE_MODEL);
}
// 保存优化后的大板数据 // 保存优化后的大板数据
esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL,req.getOptimizeBoardModelDOS()); esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL,req.getOptimizeBoardModelDOS());
@@ -870,12 +879,13 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
AssertUtils.notEmpty(goodsReqVOS,ORDER_GOODS_DATA_ERROR); AssertUtils.notEmpty(goodsReqVOS,ORDER_GOODS_DATA_ERROR);
List<Long> ids = goodsReqVOS.stream().map(GoodsReqVO::getId).toList();
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds); List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
AssertUtils.notEmpty(orderDOS,THIS_ORDER_PLATE_DATA_ERROR); AssertUtils.notEmpty(orderDOS,THIS_ORDER_PLATE_DATA_ERROR);
List<PlateDetailRespVO> plateDetailRespVOS = plateMapper.selectNoPlanPlate(orderIds,getUserOrganId()); List<PlateDetailRespVO> plateDetailRespVOS = plateMapper.selectNoPlanPlate(orderIds,ids,getUserOrganId());
AssertUtils.notEmpty(plateDetailRespVOS,ORDER_PLATE_ERROR); AssertUtils.notEmpty(plateDetailRespVOS,ORDER_PLATE_ERROR);
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.service.order; package com.cf.imes.module.executor.service.order;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
@@ -33,7 +34,6 @@ import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelCompressDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelCompressDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderPlateList; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderPlateList;
import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
@@ -320,7 +320,7 @@ public class OrderServiceImpl implements OrderService {
List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId);
if (!partsList.isEmpty()){ if (!partsList.isEmpty()){
// // 判断是否含有重复的配件 // 判断是否含有重复的配件
Iterator<Long> iterator = partsList.iterator(); Iterator<Long> iterator = partsList.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
Long id = iterator.next(); // 配件id判断是否重复 Long id = iterator.next(); // 配件id判断是否重复
@@ -1100,27 +1100,28 @@ public class OrderServiceImpl implements OrderService {
// 删除包裹,只需删除,无需还原 // 删除包裹,只需删除,无需还原
List<Long> packIds = orderItemMapper.selectPackId(orderId,bodyIds, getUserOrganId()).stream().map(OrderItemDO::getPackageId).distinct().toList(); List<OrderItemDO> orderItemDOS = orderItemMapper.selectPackId(orderId, bodyIds, getUserOrganId());
orderPackageMapper.updatePackList(orderId, packIds, getUserOrganId()); if(CollUtil.isNotEmpty(orderItemDOS)) {
orderItemMapper.deletePackList(orderId, packIds, getUserOrganId()); List<Long> packIds = orderItemDOS.stream().map(OrderItemDO::getPackageId).distinct().toList();
orderPrepackagedMapper.deletePacked(orderId, getUserOrganId()); orderPackageMapper.updatePackList(orderId, packIds, getUserOrganId());
List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackStatusList(orderId, getUserOrganId()); orderItemMapper.deletePackList(orderId, packIds, getUserOrganId());
if (orderPackageDOS.isEmpty()) { orderPrepackagedMapper.deletePacked(orderId, getUserOrganId());
OrderDO orderDO = orderMapper.selectById(orderId); OrderDO orderDO = orderMapper.selectById(orderId);
AssertUtils.notEmpty(orderDO,ORDER_NOT_EXISTS);
orderDO.setPackaged(OrderPackageStatusEnum.UNPACKED.getStatus()); orderDO.setPackaged(OrderPackageStatusEnum.UNPACKED.getStatus());
orderMapper.updateById(orderDO); orderMapper.updateById(orderDO);
} }
// 删除大板 // 删除大板
List<PlateDO> goodsList = plateMapper.selectPlateDeletedStatus(orderId, goodsIds, getUserOrganId()); List<PlateDO> goodsList = plateMapper.selectPlateDeletedStatus(orderId, goodsIds, getUserOrganId());
@@ -151,6 +151,8 @@ public class PlanServiceImpl implements PlanService {
Long processId = systemConfigRespDTO.getId(); Long processId = systemConfigRespDTO.getId();
Boolean isMix = systemConfigApi.getMultiColorConfigStatus().getCheckedData();
ArrayList<PlanDO> planDOS = new ArrayList<>(); ArrayList<PlanDO> planDOS = new ArrayList<>();
List<Long> ids = new ArrayList<>(); List<Long> ids = new ArrayList<>();
@@ -164,7 +166,7 @@ public class PlanServiceImpl implements PlanService {
SavePlanPlateList savePlanPlateList = Optional.ofNullable(createReqVO.getSavePlanPlateList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR)); SavePlanPlateList savePlanPlateList = Optional.ofNullable(createReqVO.getSavePlanPlateList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR));
if (Boolean.TRUE.equals(createReqVO.getIsMix())) { if (Boolean.TRUE.equals(isMix)) {
// 混单时走的逻辑 // 混单时走的逻辑
List<SavePlanPlateList.PlateItemList> plateItemList = Optional.ofNullable(savePlanPlateList.getPlateItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR)); List<SavePlanPlateList.PlateItemList> plateItemList = Optional.ofNullable(savePlanPlateList.getPlateItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR));
@@ -654,7 +656,19 @@ public class PlanServiceImpl implements PlanService {
statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus()); statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus());
statusList.add(OrderStatusEnum.SORTED.getStatus()); statusList.add(OrderStatusEnum.SORTED.getStatus());
List<String> goodsId = Optional.ofNullable(pageReqVO.getGoodsId()).orElse(new ArrayList<>()); List<String> goodsId = Optional.ofNullable(pageReqVO.getGoodsIds()).orElse(new ArrayList<>());
List<Long> ids = new ArrayList<>();
if(CollUtil.isNotEmpty(goodsId)) {
List<Long> orderIdList = Optional.ofNullable(pageReqVO.getOrderIds()).orElse(new ArrayList<>());
List<GoodsDO> goodsDOS = goodsMapper.selectListByGoodsId(orderIdList,goodsId, getUserOrganId());
ids.addAll(goodsDOS.stream().map(GoodsDO::getId).toList());
}
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>(); QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX queryWrapperX
@@ -665,7 +679,7 @@ public class PlanServiceImpl implements PlanService {
.isNull(FIELD_PLAN_ID) .isNull(FIELD_PLAN_ID)
.isNotNull(FIELD_OP_ID) .isNotNull(FIELD_OP_ID)
.inIfPresent("og.goods_id",goodsId) .inIfPresent("op.goods_id",ids)
.inIfPresent("o.id",pageReqVO.getOrderIds()) .inIfPresent("o.id",pageReqVO.getOrderIds())
.likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId() : null) .likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId() : null)
.likeIfPresent(FIELD_CUSTOMER, pageReqVO.getConsignee()) .likeIfPresent(FIELD_CUSTOMER, pageReqVO.getConsignee())
@@ -685,16 +699,6 @@ public class PlanServiceImpl implements PlanService {
List<Long> orderIds = records.stream().map(OrderRespVOCopy::getOrderId).toList(); List<Long> orderIds = records.stream().map(OrderRespVOCopy::getOrderId).toList();
List<Long> ids = new ArrayList<>();
if(CollUtil.isNotEmpty(goodsId)) {
List<GoodsDO> goodsDOS = goodsMapper.selectListByGoodsId(orderIds,goodsId, getUserOrganId());
ids.addAll(goodsDOS.stream().map(GoodsDO::getId).toList());
}
QueryWrapperX<PlateDO> queryWrapperX2 = new QueryWrapperX<>(); QueryWrapperX<PlateDO> queryWrapperX2 = new QueryWrapperX<>();
queryWrapperX2 queryWrapperX2
.eq("op.organ_id",getUserOrganId()) .eq("op.organ_id",getUserOrganId())
@@ -327,15 +327,20 @@ public class PlateServiceImpl implements PlateService {
List<PlateResList> plateResLists = orderMapper.selectNoPlanOrderPlateList(queryWrapperX,pageNo,pageReqVO.getPageSize()); List<PlateResList> plateResLists = orderMapper.selectNoPlanOrderPlateList(queryWrapperX,pageNo,pageReqVO.getPageSize());
List<Long> plateIds = plateResLists.stream().map(PlateResList::getPlateId).toList(); if(CollUtil.isEmpty(plateResLists)){
List<OrderModelDO> orderModelDOS = esUtils.getEsDocument(FIELD_PLATE_ID, plateIds, plateIds.size(), ORDER_PLATE_MODEL, OrderModelDO.class); return new PageResult<>();
}
PlateModelDetailRespVO.builder() // List<Long> plateIds = plateResLists.stream().map(PlateResList::getPlateId).toList();
.plateResLists(new PageResult<>(plateResLists, (long) plateCount.size())) //
.plateModels(orderModelDOS) // List<OrderModelDO> orderModelDOS = esUtils.getEsDocument(FIELD_PLATE_ID, plateIds, plateIds.size(), ORDER_PLATE_MODEL, OrderModelDO.class);
.build(); //
//
// PlateModelDetailRespVO.builder()
// .plateResLists(new PageResult<>(plateResLists, (long) plateCount.size()))
// .plateModels(orderModelDOS)
// .build();
return new PageResult<>(plateResLists, (long) plateCount.size()); return new PageResult<>(plateResLists, (long) plateCount.size());
@@ -521,13 +521,19 @@
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id
where op.organ_id = #{organId} where op.organ_id = #{organId}
and op.deleted = false
and op.order_id in and op.order_id in
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=","> <foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
#{orderIds} #{orderIds}
</foreach> </foreach>
and op.goods_id in
<foreach collection="ids" item="ids" open="(" close=")" separator=",">
#{ids}
</foreach>
and op.deleted = false
and opi.plan_id is null and opi.plan_id is null
@@ -150,6 +150,12 @@ public class PackServiceImpl implements PackService {
@Override @Override
public List<PlateDetailsRespVO> getOrdersPlateList(List<Long> orderIds) { public List<PlateDetailsRespVO> getOrdersPlateList(List<Long> orderIds) {
// List<OrderDO> orderDOS = ordersMapper.selectBatchIds(orderIds);
// orderDOS.forEach(f->{
// if(OrderPackageStatusEnum.PACKAGED.equals(f.getPackaged())){
//// throw exception(ORDER_IS_PACK_ERROR,f.getId());
// }
// });
List<PlateDetailsRespVO> plateDetailsRespVOS = orderPlateMapper.selectOrderPlateList(orderIds,getUserOrganId()); List<PlateDetailsRespVO> plateDetailsRespVOS = orderPlateMapper.selectOrderPlateList(orderIds,getUserOrganId());
@@ -49,4 +49,10 @@ public interface SystemConfigApi {
@GetMapping(PREFIX + "/organ/process-config") @GetMapping(PREFIX + "/organ/process-config")
@Operation(summary = "获取排单下加工方案组的配置信息和具体配置项的配置信息") @Operation(summary = "获取排单下加工方案组的配置信息和具体配置项的配置信息")
CommonResult<List<ProcessSchemeDTO>> getProcessById(@RequestParam("processId") Long processId); CommonResult<List<ProcessSchemeDTO>> getProcessById(@RequestParam("processId") Long processId);
@GetMapping(PREFIX + "/organ/multi-color-config-status")
@Operation(summary = "查询组织的混单是否开启")
CommonResult<Boolean> getMultiColorConfigStatus();
} }
@@ -345,6 +345,7 @@ public class ErrorCodeConstants {
public static final ErrorCode THIS_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_039, "当前排单对应的板材数据为空,请重新进行排单或检查生产单对应的板材信息"); public static final ErrorCode THIS_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_039, "当前排单对应的板材数据为空,请重新进行排单或检查生产单对应的板材信息");
public static final ErrorCode PLAN_PROCESS_CONFIG_IS_NULL = new ErrorCode(1_002_041_040, "排单:{} 对应的方案组为空,请进行配置"); public static final ErrorCode PLAN_PROCESS_CONFIG_IS_NULL = new ErrorCode(1_002_041_040, "排单:{} 对应的方案组为空,请进行配置");
public static final ErrorCode PLAN_PROCESS_CONFIG_ALL_IS_NULL = new ErrorCode(1_002_041_041, "当前所选排单对应的方案组配置均为空,请重新进行方案组配置"); public static final ErrorCode PLAN_PROCESS_CONFIG_ALL_IS_NULL = new ErrorCode(1_002_041_041, "当前所选排单对应的方案组配置均为空,请重新进行方案组配置");
public static final ErrorCode THIS_PLAN_IS_LOCK = new ErrorCode(1_002_041_042, "当前排单已被锁定,无法进行优化,请解锁后再进行优化");
@@ -237,6 +237,17 @@ public class SystemConfigApiImpl implements SystemConfigApi {
return success(schemeDTOS); return success(schemeDTOS);
} }
@Override
public CommonResult<Boolean> getMultiColorConfigStatus() {
List<SystemConfigDO> systemConfigDOS = systemConfigMapper.selectSystemConfigList(SystemConfigTypeEnum.MULTI_COLOR_ORDER_PLAN.getType(), CommonStatusEnum.ENABLE.getStatus());
return success(CollUtil.isNotEmpty(systemConfigDOS));
}
private void checkValueIsNotEmpty(List<?> value,String error) { private void checkValueIsNotEmpty(List<?> value,String error) {