fix stock workshop view

plp
chenshuichuan 2 years ago
parent 842e1eeff2
commit 46f68077b8

@ -36,7 +36,6 @@ public class BomRespVO {
private String productName;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24261")
@ExcelProperty("单位ID")
private Long unitId;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个")
@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.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.stockworkshop.vo.StockWorkShopTypeEnum;
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.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.itemrequisition.ItemRequisitionMapper;
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.Operation;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.*;
import java.io.IOException;
@ -133,13 +136,14 @@ public class FeedingRecordController {
FeedingRecordDO recordDO = feedingRecordMapper.selectById(id);
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())) {
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<String, ItemRequisitionDetailRespVO> planItemMap = new HashMap<>();
@ -168,7 +172,7 @@ public class FeedingRecordController {
}
}
}
else {
else {
recordDO.setRecordStatus(FeedingStatusEnum..getValue());
feedingRecordMapper.updateById(recordDO);
}

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

@ -76,7 +76,8 @@ public class StockWorkshopController {
@PreAuthorize("@ss.hasPermission('mes:stock-workshop:query')")
public CommonResult<PageResult<StockWorkshopRespVO>> getStockWorkshopPage(@Valid StockWorkshopPageReqVO 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")
@ -87,9 +88,11 @@ public class StockWorkshopController {
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<StockWorkshopDO> list = stockWorkshopService.getStockWorkshopPage(pageReqVO).getList();
List<StockWorkshopRespVO> list1 = stockWorkshopService.buildVOList(list);
// 导出 Excel
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')")
public CommonResult<PageResult<StockWorkshopDetailRespVO>> getStockWorkshopDetailPage(@Valid StockWorkshopDetailPageReqVO 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")
@ -87,9 +88,11 @@ public class StockWorkshopDetailController {
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<StockWorkshopDetailDO> list = stockWorkshopDetailService.getStockWorkshopDetailPage(pageReqVO).getList();
List<StockWorkshopDetailRespVO> list1 = stockWorkshopDetailService.buildVOList(list);
// 导出 Excel
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;
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
@ -21,12 +20,24 @@ public class StockWorkshopDetailRespVO {
private Long id;
@Schema(description = "原料id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7505")
@ExcelProperty("原料id")
private Long itemId;
@Schema(description = "原料", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972")
@ExcelProperty("原料")
private String itemName;
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28845")
@ExcelProperty("数量")
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")
@ExcelProperty(value = "明细类别", converter = DictConvert.class)
@ -50,8 +61,10 @@ public class StockWorkshopDetailRespVO {
private Long feedingRecordId;
@Schema(description = "操作人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "26362")
@ExcelProperty("操作人员")
private Long userId;
@Schema(description = "操作人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "26362")
@ExcelProperty("操作人员")
private String userName;
@Schema(description = "单据时间")
@ExcelProperty("单据时间")

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

@ -19,16 +19,26 @@ public class StockWorkshopRespVO {
private Long id;
@Schema(description = "原料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972")
@ExcelProperty("原料编号")
private Long itemId;
@Schema(description = "原料", requiredMode = Schema.RequiredMode.REQUIRED, example = "25972")
@ExcelProperty("原料")
private String itemName;
@Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30971")
@ExcelProperty("库存数量")
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")
@ExcelProperty("分类")
private Long categoryId;
@Schema(description = "分类", example = "2548")
@ExcelProperty("分类")
private String categoryName;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")

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

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
@ -40,5 +41,6 @@ public class StockWorkshopDO extends BaseDO {
*
*/
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;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
@ -37,6 +38,8 @@ public class StockWorkshopDetailDO extends BaseDO {
*
*/
private BigDecimal count;
//明细后库存数量
private BigDecimal stockCount;
/**
*
*
@ -67,5 +70,6 @@ public class StockWorkshopDetailDO extends BaseDO {
*
*/
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<>();
return convertMap(getFeedingRecordList(ids), FeedingRecordDO::getId);
}
//提交、反提交投料记录单
Map<String, FeedingRecordPlanDO> updateStatus(FeedingRecordDO recordDO,List<FeedingRecordDetailDO> detailDOList, String status , Long userId
,List<PlanDO> planDOList,Map<Long, List<ItemRequisitionDetailRespVO>> planItemListMap,
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) {
//车间仓投料出库
StockWorkshopDO workshopDO = new StockWorkshopDO()
.setItemId(recordDetailDO.getItemId())
.setItemId(recordDetailDO.getItemId()).setUnitId(recordDetailDO.getUnitId())
.setCount(recordDetailDO.getWeight().multiply(BigDecimal.valueOf(-1)))
.setCategoryId(1L);
workshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(),
@ -341,4 +341,49 @@ public class FeedingRecordServiceImpl implements FeedingRecordService {
private String getMapKey(Long planId, Long 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 -> {
Long categoryId = productMap.get(stockOutItem.getProductId()).getCategoryId();
StockWorkshopDO workshopDO = new StockWorkshopDO(null, stockOutItem.getProductId(),
stockOutItem.getCount(),categoryId);
stockOutItem.getCount(),categoryId,stockOutItem.getProductUnitId());
stockWorkshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(),
stockOut.getId(), stockOut.getNo() );

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

@ -1,5 +1,16 @@
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.validation.annotation.Validated;
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 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.*;
/**
@ -29,6 +41,12 @@ public class StockWorkshopDetailServiceImpl implements StockWorkshopDetailServic
@Resource
private StockWorkshopDetailMapper stockWorkshopDetailMapper;
@Resource
private ErpProductService productService;
@Resource
private ErpProductUnitService productUnitService;
@Resource
private AdminUserApi adminUserApi;
@Override
public Long createStockWorkshopDetail(StockWorkshopDetailSaveReqVO createReqVO) {
@ -71,5 +89,27 @@ public class StockWorkshopDetailServiceImpl implements StockWorkshopDetailServic
public PageResult<StockWorkshopDetailDO> getStockWorkshopDetailPage(StockWorkshopDetailPageReqVO 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
*/
PageResult<StockWorkshopDO> getStockWorkshopPage(StockWorkshopPageReqVO pageReqVO);
List<StockWorkshopRespVO> buildVOList(List<StockWorkshopDO> list);
/**
*
*

@ -1,28 +1,37 @@
package cn.iocoder.yudao.module.mes.service.stockworkshop;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO;
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.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.mysql.stockworkshop.StockWorkshopDetailMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
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 org.springframework.validation.annotation.Validated;
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.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
@ -35,10 +44,16 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
@Resource
private StockWorkshopMapper stockWorkshopMapper;
@Resource
private StockWorkshopDetailService workshopDetailService;
@Resource
private StockWorkshopDetailMapper detailMapper;
@Resource
private ErpProductService productService;
@Resource
private ErpProductUnitService productUnitService;
@Resource
private ErpProductCategoryService categoryService;
@Override
public Long createStockWorkshop(StockWorkshopSaveReqVO createReqVO) {
// 插入
@ -52,8 +67,10 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
// 校验存在
validateStockWorkshopExists(updateReqVO.getId());
// 更新
StockWorkshopDO updateObj = BeanUtils.toBean(updateReqVO, StockWorkshopDO.class);
stockWorkshopMapper.updateById(updateObj);
StockWorkshopDO updateObj = stockWorkshopMapper.selectById(updateReqVO.getId());
updateObj.setCount(updateReqVO.getCount());
updateStock(updateObj,StockWorkShopTypeEnum..getValue(), null,null);
//stockWorkshopMapper.updateById(updateObj);
}
//删除车间仓库存则先做一次损耗调整为0再删除记录
@ -83,7 +100,28 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
public PageResult<StockWorkshopDO> getStockWorkshopPage(StockWorkshopPageReqVO 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
public BigDecimal getStockCount(Long productId) {
BigDecimal count = stockWorkshopMapper.selectSumByProductId(productId);
@ -97,10 +135,13 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
throw exception(STOCK_WORKSHOP_NOT_EXISTS);
Long result =null;
StockWorkshopDO old = stockWorkshopMapper.selectByItemId(other.getItemId());
BigDecimal stockCount = other.getCount();
if(old!=null){
old.setCount(old.getCount().add(other.getCount()));
old.setCreateTime(LocalDateTime.now());
stockWorkshopMapper.updateById(old);
result = old.getId();
stockCount = old.getCount();
}
else {
result = (long)stockWorkshopMapper.insert(other);
@ -109,7 +150,9 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
StockWorkshopDetailDO detailDO = new StockWorkshopDetailDO()
.setDetailType(detailType)
.setItemId(other.getItemId())
.setCount(other.getCount());
.setUnitId(other.getUnitId())
.setCount(other.getCount())
.setStockCount(stockCount);
if(detailType.equals(StockWorkShopTypeEnum..getValue())){
detailDO.setItemRequisitionCode(code);
detailDO.setItemRequisitionDetailId(id);

Loading…
Cancel
Save