fix mes stock workshop

plp
chenshuichuan 2 years ago
parent 904b2581e7
commit eecdbf01b3

@ -132,17 +132,17 @@ CREATE TABLE `mes_machine_component`
CREATE TABLE `mes_stock_workshop`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`item_id` bigint NOT NULL COMMENT '原料编号',
`count` decimal(24,6) NOT NULL COMMENT '库存数量',
`category_id` bigint DEFAULT NULL COMMENT '分类',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`item_id` bigint NOT NULL COMMENT '原料编号',
`count` decimal(24, 6) NOT NULL COMMENT '库存数量',
`category_id` bigint DEFAULT NULL COMMENT '分类',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
@ -151,22 +151,22 @@ CREATE TABLE `mes_stock_workshop`
CREATE TABLE `mes_stock_workshop_detail`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`item_id` bigint NOT NULL COMMENT '原料id',
`count` decimal(24,6) NOT NULL COMMENT '数量',
`detail_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '明细类别',
`item_requisition_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '领料单',
`item_requisition_detail_id` bigint NOT NULL COMMENT '领料明细id',
`feeding_record_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '投料单',
`feeding_record_id` bigint NOT NULL COMMENT '投料id',
`user_id` bigint NOT NULL COMMENT '操作人员',
`operate_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '单据时间',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`item_id` bigint NOT NULL COMMENT '原料id',
`count` decimal(24, 6) NOT NULL COMMENT '数量',
`detail_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '明细类别',
`item_requisition_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '领料单',
`item_requisition_detail_id` bigint NOT NULL COMMENT '领料明细id',
`feeding_record_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '投料单',
`feeding_record_id` bigint NOT NULL COMMENT '投料id',
`user_id` bigint NOT NULL COMMENT '操作人员',
`operate_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '单据时间',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
@ -176,26 +176,75 @@ CREATE TABLE `mes_stock_workshop_detail`
CREATE TABLE `mes_feeding_record`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`feeding_record_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '单号',
`product_id` bigint COMMENT '产品id',
`plan_id` bigint COMMENT '计划id',
`item_id` bigint COMMENT '原料id',
`feeding_pipeline` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '制浆线',
`feeding_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '投料类型',
`weight` decimal(24, 6) DEFAULT NULL COMMENT '重量',
`feeding_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '投料时间',
`user_id` bigint DEFAULT NULL COMMENT '记录人',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`record_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '状态',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`feeding_record_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '单号',
`plan_id` bigint DEFAULT NULL COMMENT '计划id',
`feeding_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '投料类型',
`feeding_pipeline` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '制浆线',
`feeding_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '投料时间',
`record_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '状态',
`product_id` bigint DEFAULT NULL COMMENT '产品id',
`item_id` bigint DEFAULT NULL COMMENT '原料id',
`weight` decimal(24, 6) DEFAULT NULL COMMENT '重量',
`user_id` bigint DEFAULT NULL COMMENT '记录人',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT ='投料记录';
CREATE TABLE `mes_feeding_record_detail`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`record_id` bigint DEFAULT NULL COMMENT '记录id',
`item_id` bigint DEFAULT NULL COMMENT '原料id',
`weight` decimal(24, 6) DEFAULT NULL COMMENT '重量',
`unit_id` bigint DEFAULT NULL COMMENT '单位',
`user_id` bigint DEFAULT NULL COMMENT '记录人',
`feeding_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '投料时间',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT ='投料记录明细';
CREATE TABLE `mes_feeding_record_plan`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`record_id` bigint DEFAULT NULL COMMENT '记录id',
`record_detail_id` bigint DEFAULT NULL COMMENT '记录明细id',
`plan_id` bigint DEFAULT NULL COMMENT '计划id',
`item_id` bigint DEFAULT NULL COMMENT '原料id',
`weight` decimal(24, 6) DEFAULT NULL COMMENT '重量',
`unit_id` bigint DEFAULT NULL COMMENT '单位',
`user_id` bigint DEFAULT NULL COMMENT '记录人',
`feeding_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '投料时间',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT ='投料记录分配计划';

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -71,6 +72,7 @@ public interface BpmFormService {
* @return Map
*/
default Map<Long, BpmFormDO> getFormMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return CollectionUtils.convertMap(this.getFormList(ids), BpmFormDO::getId);
}

@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.crm.enums.business.CrmBusinessEndStatusEnum;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -114,6 +115,7 @@ public interface CrmBusinessService {
* @return Map
*/
default Map<Long, CrmBusinessDO> getBusinessMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getBusinessList(ids), CrmBusinessDO::getId);
}

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessStatusType
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -87,6 +88,7 @@ public interface CrmBusinessStatusService {
* @return Map
*/
default Map<Long, CrmBusinessStatusTypeDO> getBusinessStatusTypeMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getBusinessStatusTypeList(ids), CrmBusinessStatusTypeDO::getId);
}
@ -113,6 +115,7 @@ public interface CrmBusinessStatusService {
* @return Map
*/
default Map<Long, CrmBusinessStatusDO> getBusinessStatusMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getBusinessStatusList(ids), CrmBusinessStatusDO::getId);
}

@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -110,6 +111,7 @@ public interface CrmContactService {
* @return Map
*/
default Map<Long, CrmContactDO> getContactMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getContactList(ids), CrmContactDO::getId);
}

@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -111,6 +112,7 @@ public interface CrmContractService {
* @return Map
*/
default Map<Long, CrmContractDO> getContractMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getContractList(ids), CrmContractDO::getId);
}

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.crm.service.customer.bo.CrmCustomerCreateReqBO;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -84,6 +85,7 @@ public interface CrmCustomerService {
* @return Map
*/
default Map<Long, CrmCustomerDO> getCustomerMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getCustomerList(ids), CrmCustomerDO::getId);
}

@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -71,6 +72,7 @@ public interface CrmProductCategoryService {
* @return Map
*/
default Map<Long, CrmProductCategoryDO> getProductCategoryMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getProductCategoryList(ids), CrmProductCategoryDO::getId);
}

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -64,6 +65,7 @@ public interface CrmProductService {
* @return Map
*/
default Map<Long, CrmProductDO> getProductMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getProductList(ids), CrmProductDO::getId);
}

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -82,6 +83,7 @@ public interface CrmReceivableService {
* @return Map
*/
default Map<Long, CrmReceivableDO> getReceivableMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getReceivableList(ids), CrmReceivableDO::getId);
}

@ -17,7 +17,10 @@ public enum ErpStockRecordBizTypeEnum implements IntArrayValuable {
OTHER_IN(10, "其它入库"),
OTHER_IN_CANCEL(11, "其它入库(作废)"),
MES_ITEM_OUT(23, "领料出库"),
MES_ITEM_OUT_CANCEL(24, "领料出库(作废)"),
MES_PRODUCT_IN(13, "生产入库"),
MES_PRODUCT_IN_CANCEL(14, "生产入库(作废)"),
OTHER_OUT(20, "其它出库"),
OTHER_OUT_CANCEL(21, "其它出库(作废)"),

@ -43,14 +43,14 @@ public class ErpProductController {
@PostMapping("/create")
@Operation(summary = "创建产品")
@PreAuthorize("@ss.hasPermission('erp:product:create')")
//@PreAuthorize("@ss.hasPermission('erp:product:create')")
public CommonResult<Long> createProduct(@Valid @RequestBody ProductSaveReqVO createReqVO) {
return success(productService.createProduct(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新产品")
@PreAuthorize("@ss.hasPermission('erp:product:update')")
//@PreAuthorize("@ss.hasPermission('erp:product:update')")
public CommonResult<Boolean> updateProduct(@Valid @RequestBody ProductSaveReqVO updateReqVO) {
productService.updateProduct(updateReqVO);
return success(true);
@ -59,7 +59,7 @@ public class ErpProductController {
@DeleteMapping("/delete")
@Operation(summary = "删除产品")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('erp:product:delete')")
//@PreAuthorize("@ss.hasPermission('erp:product:delete')")
public CommonResult<Boolean> deleteProduct(@RequestParam("id") Long id) {
productService.deleteProduct(id);
return success(true);
@ -68,7 +68,7 @@ public class ErpProductController {
@GetMapping("/get")
@Operation(summary = "获得产品")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:product:query')")
//@PreAuthorize("@ss.hasPermission('erp:product:query')")
public CommonResult<ErpProductRespVO> getProduct(@RequestParam("id") Long id) {
ErpProductDO product = productService.getProduct(id);
return success(BeanUtils.toBean(product, ErpProductRespVO.class));
@ -76,7 +76,7 @@ public class ErpProductController {
@GetMapping("/page")
@Operation(summary = "获得产品分页")
@PreAuthorize("@ss.hasPermission('erp:product:query')")
//@PreAuthorize("@ss.hasPermission('erp:product:query')")
public CommonResult<PageResult<ErpProductRespVO>> getProductPage(@Valid ErpProductPageReqVO pageReqVO) {
return success(productService.getProductVOPage(pageReqVO));
}
@ -113,16 +113,13 @@ public class ErpProductController {
@GetMapping("/simple-list-order")
@Operation(summary = "获得采购商品精简列表", description = "不包含产品,主要用于前端的下拉选项")
public CommonResult<List<ErpProductRespVO>> getOrderSimpleList() {
List<ErpProductRespVO> list1 = productService.getProductVOListByCategory(ProductTypeEnum.ITEM.getTypeId());
List<ErpProductRespVO> list2 = productService.getProductVOListByCategory(ProductTypeEnum.TOOL.getTypeId());
List<ErpProductRespVO> list3 = productService.getProductVOListByCategory(ProductTypeEnum.HAOCAI.getTypeId());
List<ErpProductRespVO> list4 = productService.getProductVOListByCategory(ProductTypeEnum.GUANJJ.getTypeId());
List<ErpProductRespVO> list = new ArrayList<>();
list.addAll(list3);
list.addAll(list1);
list.addAll(list2);
list.addAll(list4);
List<Integer> categorys = new ArrayList<>();
categorys.add(ProductTypeEnum.ITEM.getTypeId());
categorys.add(ProductTypeEnum.TOOL.getTypeId());
categorys.add(ProductTypeEnum.HAOCAI.getTypeId());
categorys.add(ProductTypeEnum.GUANJJ.getTypeId());
List<ErpProductDO> productDOList = productService.selectByCategorys(categorys);
List<ErpProductRespVO> list = productService.buildProductVOList(productDOList);
return success(convertList(list, product -> new ErpProductRespVO().setId(product.getId())
.setName(product.getName()).setBarCode(product.getBarCode())
@ -132,7 +129,7 @@ public class ErpProductController {
}
@GetMapping("/export-excel")
@Operation(summary = "导出产品 Excel")
@PreAuthorize("@ss.hasPermission('erp:product:export')")
//@PreAuthorize("@ss.hasPermission('erp:product:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportProductExcel(@Valid ErpProductPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {

@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProduc
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.StockOutTypeEnum;
import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
@ -34,6 +35,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -62,14 +64,14 @@ public class ErpStockOutController {
@PostMapping("/create")
@Operation(summary = "创建其它出库单")
@PreAuthorize("@ss.hasPermission('erp:stock-out:create')")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:create')")
public CommonResult<Long> createStockOut(@Valid @RequestBody ErpStockOutSaveReqVO createReqVO) {
return success(stockOutService.createStockOut(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新其它出库单")
@PreAuthorize("@ss.hasPermission('erp:stock-out:update')")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:update')")
public CommonResult<Boolean> updateStockOut(@Valid @RequestBody ErpStockOutSaveReqVO updateReqVO) {
stockOutService.updateStockOut(updateReqVO);
return success(true);
@ -77,7 +79,7 @@ public class ErpStockOutController {
@PutMapping("/update-status")
@Operation(summary = "更新其它出库单的状态")
@PreAuthorize("@ss.hasPermission('erp:stock-out:update-status')")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:update-status')")
public CommonResult<Boolean> updateStockOutStatus(@RequestParam("id") Long id,
@RequestParam("status") Integer status) {
stockOutService.updateStockOutStatus(id, status);
@ -87,7 +89,7 @@ public class ErpStockOutController {
@DeleteMapping("/delete")
@Operation(summary = "删除其它出库单")
@Parameter(name = "ids", description = "编号数组", required = true)
@PreAuthorize("@ss.hasPermission('erp:stock-out:delete')")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:delete')")
public CommonResult<Boolean> deleteStockOut(@RequestParam("ids") List<Long> ids) {
stockOutService.deleteStockOut(ids);
return success(true);
@ -96,7 +98,7 @@ public class ErpStockOutController {
@GetMapping("/get")
@Operation(summary = "获得其它出库单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
public CommonResult<ErpStockOutRespVO> getStockOut(@RequestParam("id") Long id) {
ErpStockOutDO stockOut = stockOutService.getStockOut(id);
if (stockOut == null) {
@ -116,15 +118,18 @@ public class ErpStockOutController {
@GetMapping("/page")
@Operation(summary = "获得其它出库单分页")
@PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
public CommonResult<PageResult<ErpStockOutRespVO>> getStockOutPage(@Valid ErpStockOutPageReqVO pageReqVO) {
List<String> list = new ArrayList<>();
list.add(StockOutTypeEnum..getValue());
list.add(StockOutTypeEnum..getValue());
list.add(StockOutTypeEnum..getValue());
PageResult<ErpStockOutDO> pageResult = stockOutService.getStockOutPage(pageReqVO);
return success(buildStockOutVOPageResult(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出其它出库单 Excel")
@PreAuthorize("@ss.hasPermission('erp:stock-out:export')")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportStockOutExcel(@Valid ErpStockOutPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
@ -162,4 +167,20 @@ public class ErpStockOutController {
});
}
@PostMapping("/createMesStockOut")
@Operation(summary = "创建生产领料出库单")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:create')")
public CommonResult<Long> createMesStockout(@Valid @RequestBody ErpStockOutSaveReqVO createReqVO) {
createReqVO.setOutType(StockOutTypeEnum..getValue());
return success(stockOutService.createStockOut(createReqVO));
}
@GetMapping("/pageMesStockOut")
@Operation(summary = "获得生产领料出库单分页")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
public CommonResult<PageResult<ErpStockOutRespVO>> getMesStockOutPage(@Valid ErpStockOutPageReqVO pageReqVO) {
pageReqVO.setOutType(StockOutTypeEnum..getValue());
PageResult<ErpStockOutDO> pageResult = stockOutService.getStockOutPage(pageReqVO);
return success(buildStockOutVOPageResult(pageResult));
}
}

@ -10,6 +10,7 @@ import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -24,6 +25,12 @@ public class ErpStockOutPageReqVO extends PageParam {
@Schema(description = "客户编号", example = "3113")
private Long customerId;
@Schema(description = "负责人id", example = "3113")
private Long responserId;
@Schema(description = "出库类型", example = "随便")
private String outType;
@Schema(description = "出库类型", example = "随便")
private List<String> outTypeList;
@Schema(description = "出库时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

@ -31,6 +31,12 @@ public class ErpStockOutRespVO {
@Schema(description = "客户名称", example = "芋道")
@ExcelProperty("客户名称")
private String customerName;
@Schema(description = "负责人id", example = "3113")
private Long responserId;
@Schema(description = "负责人", example = "3113")
private String responserName;
@Schema(description = "出库类型", example = "随便")
private String outType;
@Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("出库时间")

@ -19,6 +19,10 @@ public class ErpStockOutSaveReqVO {
@Schema(description = "客户编号", example = "3113")
private Long customerId;
@Schema(description = "负责人id", example = "3113")
private Long responserId;
@Schema(description = "出库类型", example = "随便")
private String outType;
@Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "出库时间不能为空")

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum StockOutTypeEnum {
("其他出库"),
("关键件出库"),
("原料出库"),
("产品出库");
private final String value;
// 一个可选的方法,用于根据整数值获取对应的枚举实例
public static StockOutTypeEnum fromValue(String value) {
for (StockOutTypeEnum status : StockOutTypeEnum.values()) {
if (status.getValue().equals(value)) {
return status;
}
}
throw new IllegalArgumentException("Unknown value: " + value);
}
}

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
@ -39,6 +40,10 @@ public class ErpStockOutDO extends BaseDO {
* TODO
*/
private Long customerId;
//@Schema(description = "负责人id", example = "3113")
private Long responserId;
//@Schema(description = "出库类型", example = "随便")
private String outType;
/**
*
*/

@ -6,8 +6,10 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.ArrayList;
import java.util.List;
/**
@ -41,5 +43,10 @@ public interface ErpProductMapper extends BaseMapperX<ErpProductDO> {
return selectList(ErpProductDO::getStatus, CommonStatusEnum.ENABLE.getStatus(),
ErpProductDO::getCategoryId, categoryId);
}
/**查询不同类型的产品**/
default List<ErpProductDO> selectByCategorys(List<Integer> categoryIds){
return selectList(new QueryWrapper<ErpProductDO>()
.eq("is_enable", true)
.in("category_id" ,categoryIds));
}
}

@ -4,11 +4,15 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* ERP Mapper
*
@ -21,6 +25,9 @@ public interface ErpStockOutMapper extends BaseMapperX<ErpStockOutDO> {
MPJLambdaWrapperX<ErpStockOutDO> query = new MPJLambdaWrapperX<ErpStockOutDO>()
.likeIfPresent(ErpStockOutDO::getNo, reqVO.getNo())
.eqIfPresent(ErpStockOutDO::getCustomerId, reqVO.getCustomerId())
.eqIfPresent(ErpStockOutDO::getResponserId, reqVO.getResponserId())
.eqIfPresent(ErpStockOutDO::getOutType, reqVO.getOutType())
.inIfPresent(ErpStockOutDO::getOutType, reqVO.getOutTypeList())
.betweenIfPresent(ErpStockOutDO::getOutTime, reqVO.getOutTime())
.eqIfPresent(ErpStockOutDO::getStatus, reqVO.getStatus())
.likeIfPresent(ErpStockOutDO::getRemark, reqVO.getRemark())
@ -43,5 +50,8 @@ public interface ErpStockOutMapper extends BaseMapperX<ErpStockOutDO> {
default ErpStockOutDO selectByNo(String no) {
return selectOne(ErpStockOutDO::getNo, no);
}
default List<ErpStockOutDO> selectByOutType(List<String> outTypes){
return selectList(new QueryWrapper<ErpStockOutDO>()
.in("out_type" ,outTypes));
}
}

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -88,6 +89,7 @@ public interface ErpAccountService {
* @return Map
*/
default Map<Long, ErpAccountDO> getAccountMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getAccountList(ids), ErpAccountDO::getId);
}

@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -71,6 +72,7 @@ public interface ErpProductCategoryService {
* @return Map
*/
default Map<Long, ErpProductCategoryDO> getProductCategoryMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getProductCategoryList(ids), ErpProductCategoryDO::getId);
}

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -67,6 +68,7 @@ public interface ErpProductService {
*/
List<ErpProductRespVO> getProductVOListByStatus(Integer status);
List<ErpProductRespVO> getProductVOListByCategory(Integer categoryId);
List<ErpProductRespVO> buildProductVOList(List<ErpProductDO> list);
/**
* VO
*
@ -82,6 +84,7 @@ public interface ErpProductService {
* @return VO Map
*/
default Map<Long, ErpProductRespVO> getProductVOMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getProductVOList(ids), ErpProductRespVO::getId);
}
@ -116,6 +119,8 @@ public interface ErpProductService {
*/
List<ErpProductDO> getProductList(Collection<Long> ids);
default Map<Long, ErpProductDO> getProductMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getProductList(ids), ErpProductDO::getId);
}
List<ErpProductDO> selectByCategorys(List<Integer> categoryIds);
}

@ -127,8 +127,8 @@ public class ErpProductServiceImpl implements ErpProductService {
PageResult<ErpProductDO> pageResult = productMapper.selectPage(pageReqVO);
return new PageResult<>(buildProductVOList(pageResult.getList()), pageResult.getTotal());
}
private List<ErpProductRespVO> buildProductVOList(List<ErpProductDO> list) {
@Override
public List<ErpProductRespVO> buildProductVOList(List<ErpProductDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
@ -157,4 +157,9 @@ public class ErpProductServiceImpl implements ErpProductService {
public List<ErpProductDO> getProductList(Collection<Long> ids) {
return productMapper.selectBatchIds(ids);
}
@Override
public
List<ErpProductDO> selectByCategorys(List<Integer> categoryIds){
return productMapper.selectByCategorys(categoryIds);
}
}

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -80,6 +81,7 @@ public interface ErpProductUnitService {
* @return Map
*/
default Map<Long, ErpProductUnitDO> getProductUnitMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getProductUnitList(ids), ErpProductUnitDO::getId);
}

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -72,6 +73,7 @@ public interface ErpCustomerService {
* @return Map
*/
default Map<Long, ErpCustomerDO> getCustomerMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getCustomerList(ids), ErpCustomerDO::getId);
}

@ -80,5 +80,6 @@ public interface ErpStockOutService {
* @return List
*/
List<ErpStockOutItemDO> getStockOutItemListByOutIds(Collection<Long> outIds);
List<ErpStockOutDO> selectByOutType(List<String> outTypes);
}

@ -66,7 +66,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
// 1.1 校验出库项的有效性
List<ErpStockOutItemDO> stockOutItems = validateStockOutItems(createReqVO.getItems());
// 1.2 校验客户
customerService.validateCustomer(createReqVO.getCustomerId());
//customerService.validateCustomer(createReqVO.getCustomerId());
// 1.3 生成出库单号,并校验唯一性
String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_OUT_NO_PREFIX);
if (stockOutMapper.selectByNo(no) != null) {
@ -225,5 +225,11 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
}
return stockOutItemMapper.selectListByOutIds(outIds);
}
@Override
public
List<ErpStockOutDO> selectByOutType(List<String> outTypes){
return stockOutMapper.selectByOutType(outTypes);
}
}

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -88,6 +89,7 @@ public interface ErpWarehouseService {
* @return Map
*/
default Map<Long, ErpWarehouseDO> getWarehouseMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getWarehouseList(ids), ErpWarehouseDO::getId);
}

@ -38,6 +38,7 @@ public interface MemberUserApi {
* @return Map
*/
default Map<Long, MemberUserRespDTO> getUserMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
List<MemberUserRespDTO> list = getUserList(ids);
return convertMap(list, MemberUserRespDTO::getId);
}

@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.mes.controller.admin.stockworkshop;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
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.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.StockOutTypeEnum;
import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService;
import cn.iocoder.yudao.module.erp.service.stock.ErpStockOutService;
import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
import cn.iocoder.yudao.module.mes.service.stockworkshop.MesStockOutService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@Tag(name = "管理后台 - ERP 其它出库单")
@RestController
@RequestMapping("/mes/stock-out")
@Validated
public class MesStockOutController {
@Resource
private ErpStockOutService stockOutService;
@Resource
private ErpStockService stockService;
@Resource
private MesStockOutService mesStockOutService;
@PutMapping("/mes-update-status")
@Operation(summary = "更新其它出库单的状态")
//@PreAuthorize("@ss.hasPermission('erp:stock-out:update-status')")
public CommonResult<Boolean> updateMesStockOutStatus(@RequestParam("id") Long id,
@RequestParam("status") Integer status) {
mesStockOutService.updateMesStockOutStatus(id, status);
return success(true);
}
}

@ -0,0 +1,25 @@
package cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum StockWorkShopTypeEnum {
("out"),
("in"),
("clear");
private final String value;
// 一个可选的方法,用于根据整数值获取对应的枚举实例
public static StockWorkShopTypeEnum fromValue(String value) {
for (StockWorkShopTypeEnum status : StockWorkShopTypeEnum.values()) {
if (status.getValue().equals(value)) {
return status;
}
}
throw new IllegalArgumentException("Unknown value: " + value);
}
}

@ -41,4 +41,7 @@ public interface StockWorkshopMapper extends BaseMapperX<StockWorkshopDO> {
}
return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "sumCount", 0D));
}
default StockWorkshopDO selectByItemId(Long itemId){
return selectOne("item_id", itemId);
}
}

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitio
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -67,6 +68,7 @@ public interface PlanService {
List<PlanDO> getPlanList(Collection<Long> ids);
default Map<Long, PlanDO> getPlanMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getPlanList(ids), PlanDO::getId);
}
}

@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.mes.service.stockworkshop;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
* ERP Service
*
* @author
*/
public interface MesStockOutService {
//生产领料审批、反审批
void updateMesStockOutStatus(Long id, Integer status);
}

@ -0,0 +1,122 @@
package cn.iocoder.yudao.module.mes.service.stockworkshop;
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.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
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.ErpStockOutDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutItemMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutMapper;
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.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService;
import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService;
import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService;
import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkShopTypeEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
// TODO 芋艿:记录操作日志
/**
* ERP Service
*
* @author
*/
@Service
@Validated
public class MesStockOutServiceImpl implements MesStockOutService {
@Resource
private ErpStockOutMapper stockOutMapper;
@Resource
private ErpStockOutItemMapper stockOutItemMapper;
@Resource
private ErpProductService productService;
@Resource
private ErpStockRecordService stockRecordService;
@Resource
private StockWorkshopService stockWorkshopService;
@Resource
private StockWorkshopDetailService workshopDetailService;
private ErpStockOutDO validateStockOutExists(Long id) {
ErpStockOutDO stockOut = stockOutMapper.selectById(id);
if (stockOut == null) {
throw exception(STOCK_OUT_NOT_EXISTS);
}
return stockOut;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateMesStockOutStatus(Long id, Integer status) {
boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
// 1.1 校验存在
ErpStockOutDO stockOut = validateStockOutExists(id);
// 1.2 校验状态
if (stockOut.getStatus().equals(status)) {
throw exception(approve ? STOCK_OUT_APPROVE_FAIL : STOCK_OUT_PROCESS_FAIL);
}
// 2. 更新状态
int updateCount = stockOutMapper.updateByIdAndStatus(id, stockOut.getStatus(),
new ErpStockOutDO().setStatus(status));
if (updateCount == 0) {
throw exception(approve ? STOCK_OUT_APPROVE_FAIL : STOCK_OUT_PROCESS_FAIL);
}
// 3. 变更库存
List<ErpStockOutItemDO> stockOutItems = stockOutItemMapper.selectListByOutId(id);
Integer bizType = approve ? ErpStockRecordBizTypeEnum.MES_ITEM_OUT.getType()
: ErpStockRecordBizTypeEnum.MES_ITEM_OUT_CANCEL.getType();
stockOutItems.forEach(stockOutItem -> {
BigDecimal count = approve ? stockOutItem.getCount().negate() : stockOutItem.getCount();
ErpProductDO productDO = productService.getProduct(stockOutItem.getProductId());
stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
stockOutItem.getProductId(),productDO.getCategoryId(), stockOutItem.getWarehouseId(), count,
bizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo()));
});
//变更车间仓库存
// 1.2 产品信息
Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
convertSet(stockOutItems, ErpStockOutItemDO::getProductId));
stockOutItems.forEach(stockOutItem -> {
Long categoryId = productMap.get(stockOutItem.getProductId()).getCategoryId();
StockWorkshopDO workshopDO = new StockWorkshopDO(null, stockOutItem.getProductId(),
stockOutItem.getCount(),categoryId);
stockWorkshopService.updateStock(workshopDO, StockWorkShopTypeEnum..getValue(),
stockOut.getId(), stockOut.getNo() );
});
}
}

@ -64,4 +64,6 @@ public interface StockWorkshopService {
*/
BigDecimal getStockCount(Long productId);
//更新车间仓库存itemId不存在则新增
Long updateStock(StockWorkshopDO other, String detailType , Long id, String code);
}

@ -1,5 +1,10 @@
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.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDetailDO;
import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopDetailMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
@ -30,14 +35,16 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
@Resource
private StockWorkshopMapper stockWorkshopMapper;
@Resource
private StockWorkshopDetailService workshopDetailService;
@Resource
private StockWorkshopDetailMapper detailMapper;
@Override
public Long createStockWorkshop(StockWorkshopSaveReqVO createReqVO) {
// 插入
StockWorkshopDO stockWorkshop = BeanUtils.toBean(createReqVO, StockWorkshopDO.class);
stockWorkshopMapper.insert(stockWorkshop);
return updateStock(stockWorkshop,StockWorkShopTypeEnum..getValue(), null,null);
// 返回
return stockWorkshop.getId();
}
@Override
@ -49,10 +56,14 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
stockWorkshopMapper.updateById(updateObj);
}
//删除车间仓库存则先做一次损耗调整为0再删除记录
@Override
public void deleteStockWorkshop(Long id) {
// 校验存在
validateStockWorkshopExists(id);
StockWorkshopDO stockWorkshop = stockWorkshopMapper.selectById(id);
stockWorkshop.setCount(stockWorkshop.getCount().multiply(BigDecimal.valueOf(-1)));
updateStock(stockWorkshop,StockWorkShopTypeEnum..getValue(), null,null);
// 删除
stockWorkshopMapper.deleteById(id);
}
@ -78,5 +89,37 @@ public class StockWorkshopServiceImpl implements StockWorkshopService {
BigDecimal count = stockWorkshopMapper.selectSumByProductId(productId);
return count != null ? count : BigDecimal.ZERO;
}
//更新车间仓库存itemId不存在则新增
@Override
@Transactional(rollbackFor = Exception.class)
public Long updateStock(StockWorkshopDO other, String detailType , Long id, String code){
if(other ==null || other.getId() == null)
throw exception(STOCK_WORKSHOP_NOT_EXISTS);
Long result =null;
StockWorkshopDO old = stockWorkshopMapper.selectByItemId(other.getItemId());
if(old!=null){
old.setCount(old.getCount().add(other.getCount()));
stockWorkshopMapper.updateById(old);
result = old.getId();
}
else {
result = (long)stockWorkshopMapper.insert(other);
}
//更新明细
StockWorkshopDetailDO detailDO = new StockWorkshopDetailDO()
.setDetailType(detailType)
.setItemId(other.getItemId())
.setCount(other.getCount());
if(detailType.equals(StockWorkShopTypeEnum..getValue())){
detailDO.setItemRequisitionCode(code);
detailDO.setItemRequisitionDetailId(id);
}
else if(detailType.equals(StockWorkShopTypeEnum..getValue())){
detailDO.setFeedingRecordCode(code);
detailDO.setFeedingRecordId(id);
}
detailMapper.insert(detailDO);
return result;
}
}

@ -88,6 +88,7 @@ public interface PayAppService {
* @return Map
*/
default Map<Long, PayAppDO> getAppMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
List<PayAppDO> list = getAppList(ids);
return CollectionUtils.convertMap(list, PayAppDO::getId);
}

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -46,6 +47,7 @@ public interface DeptApi {
* @return Map
*/
default Map<Long, DeptRespDTO> getDeptMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
List<DeptRespDTO> list = getDeptList(ids);
return CollectionUtils.convertMap(list, DeptRespDTO::getId);
}

@ -3,10 +3,7 @@ package cn.iocoder.yudao.module.system.api.user;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* Admin API
@ -62,6 +59,7 @@ public interface AdminUserApi {
* @return Map
*/
default Map<Long, AdminUserRespDTO> getUserMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
List<AdminUserRespDTO> users = getUserList(ids);
return CollectionUtils.convertMap(users, AdminUserRespDTO::getId);
}

@ -5,10 +5,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqV
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
* Service
@ -70,6 +67,7 @@ public interface DeptService {
* @return Map
*/
default Map<Long, DeptDO> getDeptMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
List<DeptDO> list = getDeptList(ids);
return CollectionUtils.convertMap(list, DeptDO::getId);
}

Loading…
Cancel
Save