fix stock workshop view

plp
chenshuichuan 2 years ago
parent 842e1eeff2
commit 46f68077b8

@ -36,7 +36,6 @@ public class BomRespVO {
private String productName; private String productName;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261") @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261")
@ExcelProperty("单位ID")
private Long unitId; private Long unitId;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个") @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个")
@ExcelProperty("单位") @ExcelProperty("单位")

@ -3,9 +3,11 @@ package cn.iocoder.yudao.module.mes.controller.admin.feedingrecord;
import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionDetailRespVO; import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanStatusEnum; import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanStatusEnum;
import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkShopTypeEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingplan.FeedingRecordPlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.feedingplan.FeedingRecordPlanDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO;
import cn.iocoder.yudao.module.mes.dal.mysql.feedingrecord.FeedingRecordMapper; import cn.iocoder.yudao.module.mes.dal.mysql.feedingrecord.FeedingRecordMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.itemrequisition.ItemRequisitionMapper; import cn.iocoder.yudao.module.mes.dal.mysql.itemrequisition.ItemRequisitionMapper;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService; import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService;
@ -17,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.io.IOException; import java.io.IOException;
@ -133,13 +136,14 @@ public class FeedingRecordController {
FeedingRecordDO recordDO = feedingRecordMapper.selectById(id); FeedingRecordDO recordDO = feedingRecordMapper.selectById(id);
if(recordDO==null) throw exception(FEEDING_RECORD_NOT_EXISTS); if(recordDO==null) throw exception(FEEDING_RECORD_NOT_EXISTS);
//后续步骤只处理领料投料的投料单,湿废品和干废品投料暂不处理 //后续步骤只处理领料投料的投料单,湿废品和干废品投料暂不处理
//计划及计划物料需求
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
//获取正在开工的计划,按照计划完工时间从小到大排序,优先分配给最近计划完工的计划。
List<PlanDO> planDOList = planService.getPlanByStatusAndPipeline(statusList,recordDO.getFeedingPipeline());
if(recordDO.getFeedingType().equals(FeedingTypeEnum..getValue())) { if(recordDO.getFeedingType().equals(FeedingTypeEnum..getValue())) {
List<FeedingRecordDetailDO> detailDOList = feedingRecordService.getFeedingRecordDetailListByRecordId(id); List<FeedingRecordDetailDO> detailDOList = feedingRecordService.getFeedingRecordDetailListByRecordId(id);
//计划及计划物料需求
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
//获取正在开工的计划,按照计划完工时间从小到大排序,优先分配给最近计划完工的计划。
List<PlanDO> planDOList = planService.getPlanByStatusAndPipeline(statusList,recordDO.getFeedingPipeline());
Map<Long, List<ItemRequisitionDetailRespVO>> planItemListMap = new HashMap<>(); Map<Long, List<ItemRequisitionDetailRespVO>> planItemListMap = new HashMap<>();
Map<String, ItemRequisitionDetailRespVO> planItemMap = new HashMap<>(); Map<String, ItemRequisitionDetailRespVO> planItemMap = new HashMap<>();
@ -168,7 +172,7 @@ public class FeedingRecordController {
} }
} }
} }
else { else {
recordDO.setRecordStatus(FeedingStatusEnum..getValue()); recordDO.setRecordStatus(FeedingStatusEnum..getValue());
feedingRecordMapper.updateById(recordDO); feedingRecordMapper.updateById(recordDO);
} }

@ -7,13 +7,14 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
public enum FeedingTypeEnum { public enum FeedingTypeEnum {
("org"), ("org",0L),
湿("wet"), 湿("wet",11L),
("dry"); ("dry",10L);
private final String value; private final String value;
//干湿品在原料表中记录id
private final Long table_id;
// 一个可选的方法,用于根据整数值获取对应的枚举实例 // 一个可选的方法,用于根据整数值获取对应的枚举实例
public static FeedingTypeEnum fromValue(String value) { public static FeedingTypeEnum fromValue(String value) {
for (FeedingTypeEnum status : FeedingTypeEnum.values()) { for (FeedingTypeEnum status : FeedingTypeEnum.values()) {

@ -76,7 +76,8 @@ public class StockWorkshopController {
@PreAuthorize("@ss.hasPermission('mes:stock-workshop:query')") @PreAuthorize("@ss.hasPermission('mes:stock-workshop:query')")
public CommonResult<PageResult<StockWorkshopRespVO>> getStockWorkshopPage(@Valid StockWorkshopPageReqVO pageReqVO) { public CommonResult<PageResult<StockWorkshopRespVO>> getStockWorkshopPage(@Valid StockWorkshopPageReqVO pageReqVO) {
PageResult<StockWorkshopDO> pageResult = stockWorkshopService.getStockWorkshopPage(pageReqVO); PageResult<StockWorkshopDO> pageResult = stockWorkshopService.getStockWorkshopPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, StockWorkshopRespVO.class)); List<StockWorkshopRespVO> list = stockWorkshopService.buildVOList(pageResult.getList());
return success(new PageResult<>(list, pageResult.getTotal()));
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@ -87,9 +88,11 @@ public class StockWorkshopController {
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<StockWorkshopDO> list = stockWorkshopService.getStockWorkshopPage(pageReqVO).getList(); List<StockWorkshopDO> list = stockWorkshopService.getStockWorkshopPage(pageReqVO).getList();
List<StockWorkshopRespVO> list1 = stockWorkshopService.buildVOList(list);
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "车间仓库存.xls", "数据", StockWorkshopRespVO.class, ExcelUtils.write(response, "车间仓库存.xls", "数据", StockWorkshopRespVO.class,
BeanUtils.toBean(list, StockWorkshopRespVO.class)); list1);
} }
} }

@ -76,7 +76,8 @@ public class StockWorkshopDetailController {
@PreAuthorize("@ss.hasPermission('mes:stock-workshop-detail:query')") @PreAuthorize("@ss.hasPermission('mes:stock-workshop-detail:query')")
public CommonResult<PageResult<StockWorkshopDetailRespVO>> getStockWorkshopDetailPage(@Valid StockWorkshopDetailPageReqVO pageReqVO) { public CommonResult<PageResult<StockWorkshopDetailRespVO>> getStockWorkshopDetailPage(@Valid StockWorkshopDetailPageReqVO pageReqVO) {
PageResult<StockWorkshopDetailDO> pageResult = stockWorkshopDetailService.getStockWorkshopDetailPage(pageReqVO); PageResult<StockWorkshopDetailDO> pageResult = stockWorkshopDetailService.getStockWorkshopDetailPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, StockWorkshopDetailRespVO.class)); List<StockWorkshopDetailRespVO> list = stockWorkshopDetailService.buildVOList(pageResult.getList());
return success(new PageResult<>(list, pageResult.getTotal()));
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@ -87,9 +88,11 @@ public class StockWorkshopDetailController {
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<StockWorkshopDetailDO> list = stockWorkshopDetailService.getStockWorkshopDetailPage(pageReqVO).getList(); List<StockWorkshopDetailDO> list = stockWorkshopDetailService.getStockWorkshopDetailPage(pageReqVO).getList();
List<StockWorkshopDetailRespVO> list1 = stockWorkshopDetailService.buildVOList(list);
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "车间仓明细.xls", "数据", StockWorkshopDetailRespVO.class, ExcelUtils.write(response, "车间仓明细.xls", "数据", StockWorkshopDetailRespVO.class,
BeanUtils.toBean(list, StockWorkshopDetailRespVO.class)); list1);
} }
} }

@ -1,15 +1,14 @@
package cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo; package cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import java.util.*;
import java.util.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; 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") @Schema(description = "管理后台 - 车间仓明细 Response VO")
@Data @Data
@ -21,12 +20,24 @@ public class StockWorkshopDetailRespVO {
private Long id; private Long id;
@Schema(description = "原料id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7505") @Schema(description = "原料id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7505")
@ExcelProperty("原料id")
private Long itemId; private Long itemId;
@Schema(description = "原料", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972")
@ExcelProperty("原料")
private String itemName;
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845") @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845")
@ExcelProperty("数量") @ExcelProperty("数量")
private BigDecimal count; private BigDecimal count;
//明细后库存数量
@Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845")
@ExcelProperty("库存数量")
private BigDecimal stockCount;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261")
private Long unitId;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个")
@ExcelProperty("单位")
private String unitName;
@Schema(description = "明细类别", example = "2") @Schema(description = "明细类别", example = "2")
@ExcelProperty(value = "明细类别", converter = DictConvert.class) @ExcelProperty(value = "明细类别", converter = DictConvert.class)
@ -50,8 +61,10 @@ public class StockWorkshopDetailRespVO {
private Long feedingRecordId; private Long feedingRecordId;
@Schema(description = "操作人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "26362") @Schema(description = "操作人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "26362")
@ExcelProperty("操作人员")
private Long userId; private Long userId;
@Schema(description = "操作人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "26362")
@ExcelProperty("操作人员")
private String userName;
@Schema(description = "单据时间") @Schema(description = "单据时间")
@ExcelProperty("单据时间") @ExcelProperty("单据时间")

@ -22,7 +22,8 @@ public class StockWorkshopDetailSaveReqVO {
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845") @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845")
@NotNull(message = "数量不能为空") @NotNull(message = "数量不能为空")
private BigDecimal count; private BigDecimal count;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261")
private Long unitId;
@Schema(description = "明细类别", example = "2") @Schema(description = "明细类别", example = "2")
private String detailType; private String detailType;

@ -19,16 +19,26 @@ public class StockWorkshopRespVO {
private Long id; private Long id;
@Schema(description = "原料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972") @Schema(description = "原料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972")
@ExcelProperty("原料编号")
private Long itemId; private Long itemId;
@Schema(description = "原料", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972")
@ExcelProperty("原料")
private String itemName;
@Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30971") @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30971")
@ExcelProperty("库存数量") @ExcelProperty("库存数量")
private BigDecimal count; private BigDecimal count;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261")
private Long unitId;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个")
@ExcelProperty("单位")
private String unitName;
@Schema(description = "分类", example = "2548") @Schema(description = "分类", example = "2548")
@ExcelProperty("分类")
private Long categoryId; private Long categoryId;
@Schema(description = "分类", example = "2548")
@ExcelProperty("分类")
private String categoryName;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间") @ExcelProperty("创建时间")

@ -20,7 +20,8 @@ public class StockWorkshopSaveReqVO {
@Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30971") @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30971")
@NotNull(message = "库存数量不能为空") @NotNull(message = "库存数量不能为空")
private BigDecimal count; private BigDecimal count;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261")
private Long unitId;
@Schema(description = "分类", example = "2548") @Schema(description = "分类", example = "2548")
private Long categoryId; private Long categoryId;

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop; package cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -40,5 +41,6 @@ public class StockWorkshopDO extends BaseDO {
* *
*/ */
private Long categoryId; private Long categoryId;
//@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261")
private Long unitId;
} }

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop; package cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -37,6 +38,8 @@ public class StockWorkshopDetailDO extends BaseDO {
* *
*/ */
private BigDecimal count; private BigDecimal count;
//明细后库存数量
private BigDecimal stockCount;
/** /**
* *
* *
@ -67,5 +70,6 @@ public class StockWorkshopDetailDO extends BaseDO {
* *
*/ */
private LocalDateTime operateTime; private LocalDateTime operateTime;
//@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261")
private Long unitId;
} }

@ -75,10 +75,11 @@ public interface FeedingRecordService {
if(ids.isEmpty())return new HashMap<>(); if(ids.isEmpty())return new HashMap<>();
return convertMap(getFeedingRecordList(ids), FeedingRecordDO::getId); return convertMap(getFeedingRecordList(ids), FeedingRecordDO::getId);
} }
//提交、反提交投料记录单
Map<String, FeedingRecordPlanDO> updateStatus(FeedingRecordDO recordDO,List<FeedingRecordDetailDO> detailDOList, String status , Long userId Map<String, FeedingRecordPlanDO> updateStatus(FeedingRecordDO recordDO,List<FeedingRecordDetailDO> detailDOList, String status , Long userId
,List<PlanDO> planDOList,Map<Long, List<ItemRequisitionDetailRespVO>> planItemListMap, ,List<PlanDO> planDOList,Map<Long, List<ItemRequisitionDetailRespVO>> planItemListMap,
Map<String, ItemRequisitionDetailRespVO> planItemMap); Map<String, ItemRequisitionDetailRespVO> planItemMap);
//提交、反提交投料记录单
//提交干废品和湿废品投料记录,分配给计划
void dealOtherRecord(FeedingRecordDO recordDO, String status , Long userId,List<PlanDO> planDOList);
} }

@ -225,7 +225,7 @@ public class FeedingRecordServiceImpl implements FeedingRecordService {
for (FeedingRecordDetailDO recordDetailDO: detailDOList) { for (FeedingRecordDetailDO recordDetailDO: detailDOList) {
//车间仓投料出库 //车间仓投料出库
StockWorkshopDO workshopDO = new StockWorkshopDO() StockWorkshopDO workshopDO = new StockWorkshopDO()
.setItemId(recordDetailDO.getItemId()) .setItemId(recordDetailDO.getItemId()).setUnitId(recordDetailDO.getUnitId())
.setCount(recordDetailDO.getWeight().multiply(BigDecimal.valueOf(-1))) .setCount(recordDetailDO.getWeight().multiply(BigDecimal.valueOf(-1)))
.setCategoryId(1L); .setCategoryId(1L);
workshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(), workshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(),
@ -341,4 +341,49 @@ public class FeedingRecordServiceImpl implements FeedingRecordService {
private String getMapKey(Long planId, Long itemId){ private String getMapKey(Long planId, Long itemId){
return planId + "-" + itemId; return planId + "-" + itemId;
} }
//干废品和湿废品投料分配计划
@Override
@Transactional(rollbackFor = Exception.class)
public void dealOtherRecord(FeedingRecordDO recordDO, String status , Long userId,List<PlanDO> planDOList) {
FeedingTypeEnum typeEnum = FeedingTypeEnum.fromValue(recordDO.getFeedingType());
MathContext mc = new MathContext(3, RoundingMode.HALF_UP);
if(status.equals(FeedingStatusEnum..getValue())) {
Long totalPlanNumber = 0L;
for (PlanDO plan : planDOList) {
totalPlanNumber += plan.getPlanNumber();
}
List<FeedingRecordPlanDO> recordPlanDOList = new ArrayList<>();
for (PlanDO plan : planDOList) {
BigDecimal weight = recordDO.getWeight().multiply(BigDecimal.valueOf(plan.getPlanNumber()/totalPlanNumber),mc);
FeedingRecordPlanDO recordPlanDO = new FeedingRecordPlanDO()
.setPlanId(plan.getId()).setItemId(typeEnum.getTable_id())
.setRecordId(recordDO.getId()).setUserId(userId).setUnitId(ProductUnitEnum.Kilogram.getUnitId())
.setRecordDetailId(0L)
.setFeedingTime(recordDO.getFeedingTime())
.setWeight(weight);
recordPlanDOList.add(recordPlanDO);
}
if (recordPlanDOList.size()>0)
recordPlanMapper.insertBatch(recordPlanDOList);
}
//todo 需要回退吗?
else if(status.equals(FeedingStatusEnum.稿.getValue())) {
}
//车间仓也进行出入库记录
StockWorkshopDO workshopDO = new StockWorkshopDO()
.setItemId(typeEnum.getTable_id()).setUnitId(ProductUnitEnum.Kilogram.getUnitId())
.setCount(recordDO.getWeight())
.setCategoryId(1L);
workshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(),
0L, "");
workshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(),
recordDO.getId(), recordDO.getFeedingRecordCode());
return;
}
} }

@ -112,7 +112,7 @@ public class MesStockOutServiceImpl implements MesStockOutService {
stockOutItems.forEach(stockOutItem -> { stockOutItems.forEach(stockOutItem -> {
Long categoryId = productMap.get(stockOutItem.getProductId()).getCategoryId(); Long categoryId = productMap.get(stockOutItem.getProductId()).getCategoryId();
StockWorkshopDO workshopDO = new StockWorkshopDO(null, stockOutItem.getProductId(), StockWorkshopDO workshopDO = new StockWorkshopDO(null, stockOutItem.getProductId(),
stockOutItem.getCount(),categoryId); stockOutItem.getCount(),categoryId,stockOutItem.getProductUnitId());
stockWorkshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(), stockWorkshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(),
stockOut.getId(), stockOut.getNo() ); stockOut.getId(), stockOut.getNo() );

@ -52,5 +52,5 @@ public interface StockWorkshopDetailService {
* @return * @return
*/ */
PageResult<StockWorkshopDetailDO> getStockWorkshopDetailPage(StockWorkshopDetailPageReqVO pageReqVO); PageResult<StockWorkshopDetailDO> getStockWorkshopDetailPage(StockWorkshopDetailPageReqVO pageReqVO);
List<StockWorkshopDetailRespVO> buildVOList(List<StockWorkshopDetailDO> list);
} }

@ -1,5 +1,16 @@
package cn.iocoder.yudao.module.mes.service.stockworkshop; package cn.iocoder.yudao.module.mes.service.stockworkshop;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingplan.FeedingRecordPlanDO;
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.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -16,6 +27,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopDetailMa
import javax.annotation.Resource; import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 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.*; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/** /**
@ -29,6 +41,12 @@ public class StockWorkshopDetailServiceImpl implements StockWorkshopDetailServic
@Resource @Resource
private StockWorkshopDetailMapper stockWorkshopDetailMapper; private StockWorkshopDetailMapper stockWorkshopDetailMapper;
@Resource
private ErpProductService productService;
@Resource
private ErpProductUnitService productUnitService;
@Resource
private AdminUserApi adminUserApi;
@Override @Override
public Long createStockWorkshopDetail(StockWorkshopDetailSaveReqVO createReqVO) { public Long createStockWorkshopDetail(StockWorkshopDetailSaveReqVO createReqVO) {
@ -71,5 +89,27 @@ public class StockWorkshopDetailServiceImpl implements StockWorkshopDetailServic
public PageResult<StockWorkshopDetailDO> getStockWorkshopDetailPage(StockWorkshopDetailPageReqVO pageReqVO) { public PageResult<StockWorkshopDetailDO> getStockWorkshopDetailPage(StockWorkshopDetailPageReqVO pageReqVO) {
return stockWorkshopDetailMapper.selectPage(pageReqVO); return stockWorkshopDetailMapper.selectPage(pageReqVO);
} }
@Override
public List<StockWorkshopDetailRespVO> buildVOList(List<StockWorkshopDetailDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, ErpProductDO> map = productService.getProductMap(
convertSet(list, StockWorkshopDetailDO::getItemId));
Map<Long, ErpProductUnitDO> unitMap = productUnitService.getProductUnitMap(
convertSet(list, StockWorkshopDetailDO::getUnitId));
// 1.4 管理员信息
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(list, StockWorkshopDetailDO::getUserId));
return BeanUtils.toBean(list, StockWorkshopDetailRespVO.class, item -> {
MapUtils.findAndThen(map, item.getItemId(),
product -> item.setItemName(product.getName()));
MapUtils.findAndThen(unitMap, item.getUnitId(),
unit -> item.setUnitName(unit.getName()));
MapUtils.findAndThen(userMap, item.getUserId(),
user -> item.setUserName(user.getNickname()));
});
}
} }

@ -53,7 +53,7 @@ public interface StockWorkshopService {
* @return * @return
*/ */
PageResult<StockWorkshopDO> getStockWorkshopPage(StockWorkshopPageReqVO pageReqVO); PageResult<StockWorkshopDO> getStockWorkshopPage(StockWorkshopPageReqVO pageReqVO);
List<StockWorkshopRespVO> buildVOList(List<StockWorkshopDO> list);
/** /**
* *
* *

@ -1,28 +1,37 @@
package cn.iocoder.yudao.module.mes.service.stockworkshop; package cn.iocoder.yudao.module.mes.service.stockworkshop;
import cn.iocoder.yudao.framework.common.exception.ErrorCode; import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductCategoryService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkShopTypeEnum;
import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkshopPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkshopRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkshopSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDetailDO; import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDetailDO;
import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopDetailMapper; import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopDetailMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO;
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.stockworkshop.StockWorkshopMapper;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
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.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.STOCK_WORKSHOP_NOT_EXISTS;
/** /**
* Service * Service
@ -35,10 +44,16 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
@Resource @Resource
private StockWorkshopMapper stockWorkshopMapper; private StockWorkshopMapper stockWorkshopMapper;
@Resource
private StockWorkshopDetailService workshopDetailService;
@Resource @Resource
private StockWorkshopDetailMapper detailMapper; private StockWorkshopDetailMapper detailMapper;
@Resource
private ErpProductService productService;
@Resource
private ErpProductUnitService productUnitService;
@Resource
private ErpProductCategoryService categoryService;
@Override @Override
public Long createStockWorkshop(StockWorkshopSaveReqVO createReqVO) { public Long createStockWorkshop(StockWorkshopSaveReqVO createReqVO) {
// 插入 // 插入
@ -52,8 +67,10 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
// 校验存在 // 校验存在
validateStockWorkshopExists(updateReqVO.getId()); validateStockWorkshopExists(updateReqVO.getId());
// 更新 // 更新
StockWorkshopDO updateObj = BeanUtils.toBean(updateReqVO, StockWorkshopDO.class); StockWorkshopDO updateObj = stockWorkshopMapper.selectById(updateReqVO.getId());
stockWorkshopMapper.updateById(updateObj); updateObj.setCount(updateReqVO.getCount());
updateStock(updateObj,StockWorkShopTypeEnum..getValue(), null,null);
//stockWorkshopMapper.updateById(updateObj);
} }
//删除车间仓库存则先做一次损耗调整为0再删除记录 //删除车间仓库存则先做一次损耗调整为0再删除记录
@ -83,7 +100,28 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
public PageResult<StockWorkshopDO> getStockWorkshopPage(StockWorkshopPageReqVO pageReqVO) { public PageResult<StockWorkshopDO> getStockWorkshopPage(StockWorkshopPageReqVO pageReqVO) {
return stockWorkshopMapper.selectPage(pageReqVO); return stockWorkshopMapper.selectPage(pageReqVO);
} }
@Override
public List<StockWorkshopRespVO> buildVOList(List<StockWorkshopDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, ErpProductDO> map = productService.getProductMap(
convertSet(list, StockWorkshopDO::getItemId));
Map<Long, ErpProductUnitDO> unitMap = productUnitService.getProductUnitMap(
convertSet(list, StockWorkshopDO::getUnitId));
Map<Long, ErpProductCategoryDO> cateMap = categoryService.getProductCategoryMap(
convertSet(list, StockWorkshopDO::getCategoryId));
return BeanUtils.toBean(list, StockWorkshopRespVO.class, item -> {
MapUtils.findAndThen(map, item.getItemId(),
product -> item.setItemName(product.getName()));
MapUtils.findAndThen(unitMap, item.getUnitId(),
unit -> item.setUnitName(unit.getName()));
MapUtils.findAndThen(cateMap, item.getCategoryId(),
cate -> item.setCategoryName(cate.getName()));
});
}
@Override @Override
public BigDecimal getStockCount(Long productId) { public BigDecimal getStockCount(Long productId) {
BigDecimal count = stockWorkshopMapper.selectSumByProductId(productId); BigDecimal count = stockWorkshopMapper.selectSumByProductId(productId);
@ -97,10 +135,13 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
throw exception(STOCK_WORKSHOP_NOT_EXISTS); throw exception(STOCK_WORKSHOP_NOT_EXISTS);
Long result =null; Long result =null;
StockWorkshopDO old = stockWorkshopMapper.selectByItemId(other.getItemId()); StockWorkshopDO old = stockWorkshopMapper.selectByItemId(other.getItemId());
BigDecimal stockCount = other.getCount();
if(old!=null){ if(old!=null){
old.setCount(old.getCount().add(other.getCount())); old.setCount(old.getCount().add(other.getCount()));
old.setCreateTime(LocalDateTime.now());
stockWorkshopMapper.updateById(old); stockWorkshopMapper.updateById(old);
result = old.getId(); result = old.getId();
stockCount = old.getCount();
} }
else { else {
result = (long)stockWorkshopMapper.insert(other); result = (long)stockWorkshopMapper.insert(other);
@ -109,7 +150,9 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
StockWorkshopDetailDO detailDO = new StockWorkshopDetailDO() StockWorkshopDetailDO detailDO = new StockWorkshopDetailDO()
.setDetailType(detailType) .setDetailType(detailType)
.setItemId(other.getItemId()) .setItemId(other.getItemId())
.setCount(other.getCount()); .setUnitId(other.getUnitId())
.setCount(other.getCount())
.setStockCount(stockCount);
if(detailType.equals(StockWorkShopTypeEnum..getValue())){ if(detailType.equals(StockWorkShopTypeEnum..getValue())){
detailDO.setItemRequisitionCode(code); detailDO.setItemRequisitionCode(code);
detailDO.setItemRequisitionDetailId(id); detailDO.setItemRequisitionDetailId(id);

Loading…
Cancel
Save