Merge remote-tracking branch 'origin/main'

main
liutao 3 days ago
commit 52bdb52b4e

@ -69,7 +69,7 @@ public class QrcodeRecordController {
@GetMapping("/get")
@Operation(summary = "获得通用二维码记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('qrcode:record:query')")
// @PreAuthorize("@ss.hasPermission('qrcode:record:query')")
public CommonResult<QrcodeRecordRespVO> getRecord(@RequestParam("id") Long id) {
QrcodeRecordDO record = qrcodeRecordService.getRecord(id);
return success(BeanUtils.toBean(record, QrcodeRecordRespVO.class));
@ -77,7 +77,7 @@ public class QrcodeRecordController {
@GetMapping("/page")
@Operation(summary = "获得通用二维码记录分页")
@PreAuthorize("@ss.hasPermission('qrcode:record:query')")
// @PreAuthorize("@ss.hasPermission('qrcode:record:query')")
public CommonResult<PageResult<QrcodeRecordRespVO>> getRecordPage(@Valid QrcodeRecordPageReqVO pageReqVO) {
PageResult<QrcodeRecordDO> pageResult = qrcodeRecordService.getRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, QrcodeRecordRespVO.class));

@ -64,7 +64,7 @@ public class AutocodePartController {
@GetMapping("/get")
@Operation(summary = "获得编码规则组成")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:autocode-part:query')")
// @PreAuthorize("@ss.hasPermission('erp:autocode-part:query')")
public CommonResult<AutocodePartRespVO> getAutocodePart(@RequestParam("id") Long id) {
AutocodePartDO autocodePart = autocodePartService.getAutocodePart(id);
return success(BeanUtils.toBean(autocodePart, AutocodePartRespVO.class));
@ -72,7 +72,7 @@ public class AutocodePartController {
@GetMapping("/page")
@Operation(summary = "获得编码规则组成分页")
@PreAuthorize("@ss.hasPermission('erp:autocode-part:query')")
// @PreAuthorize("@ss.hasPermission('erp:autocode-part:query')")
public CommonResult<PageResult<AutocodePartRespVO>> getAutocodePartPage(@Valid AutocodePartPageReqVO pageReqVO) {
PageResult<AutocodePartDO> pageResult = autocodePartService.getAutocodePartPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AutocodePartRespVO.class));

@ -68,7 +68,7 @@ public class AutocodeRecordController {
@GetMapping("/get")
@Operation(summary = "获得编码生成记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:autocode-record:query')")
// @PreAuthorize("@ss.hasPermission('erp:autocode-record:query')")
public CommonResult<AutocodeRecordRespVO> getAutocodeRecord(@RequestParam("id") Long id) {
AutocodeRecordDO autocodeRecord = autocodeRecordService.getAutocodeRecord(id);
return success(BeanUtils.toBean(autocodeRecord, AutocodeRecordRespVO.class));
@ -76,7 +76,7 @@ public class AutocodeRecordController {
@GetMapping("/page")
@Operation(summary = "获得编码生成记录分页")
@PreAuthorize("@ss.hasPermission('erp:autocode-record:query')")
// @PreAuthorize("@ss.hasPermission('erp:autocode-record:query')")
public CommonResult<PageResult<AutocodeRecordRespVO>> getAutocodeRecordPage(@Valid AutocodeRecordPageReqVO pageReqVO) {
PageResult<AutocodeRecordDO> pageResult = autocodeRecordService.getAutocodeRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AutocodeRecordRespVO.class));

@ -71,7 +71,7 @@ public class AutocodeRuleController {
@GetMapping("/get")
@Operation(summary = "获得编码规则")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:autocode-rule:query')")
// @PreAuthorize("@ss.hasPermission('erp:autocode-rule:query')")
public CommonResult<AutocodeRuleRespVO> getAutocodeRule(@RequestParam("id") Long id) {
AutocodeRuleDO autocodeRule = autocodeRuleService.getAutocodeRule(id);
return success(BeanUtils.toBean(autocodeRule, AutocodeRuleRespVO.class));
@ -79,7 +79,7 @@ public class AutocodeRuleController {
@GetMapping("/page")
@Operation(summary = "获得编码规则分页")
@PreAuthorize("@ss.hasPermission('erp:autocode-rule:query')")
// @PreAuthorize("@ss.hasPermission('erp:autocode-rule:query')")
public CommonResult<PageResult<AutocodeRuleRespVO>> getAutocodeRulePage(@Valid AutocodeRulePageReqVO pageReqVO) {
PageResult<AutocodeRuleDO> pageResult = autocodeRuleService.getAutocodeRulePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AutocodeRuleRespVO.class));
@ -113,7 +113,7 @@ public class AutocodeRuleController {
@GetMapping("/autocode-part/list-by-rule-id")
@Operation(summary = "获得编码规则组成列表")
@Parameter(name = "ruleId", description = "规则ID")
@PreAuthorize("@ss.hasPermission('erp:autocode-rule:query')")
// @PreAuthorize("@ss.hasPermission('erp:autocode-rule:query')")
public CommonResult<List<AutocodePartDO>> getAutocodePartListByRuleId(@RequestParam("ruleId") Long ruleId) {
return success(autocodeRuleService.getAutocodePartListByRuleId(ruleId));
}

@ -78,7 +78,7 @@ public class ErpAccountController {
@GetMapping("/get")
@Operation(summary = "获得结算账户")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:account:query')")
// @PreAuthorize("@ss.hasPermission('erp:account:query')")
public CommonResult<ErpAccountRespVO> getAccount(@RequestParam("id") Long id) {
ErpAccountDO account = accountService.getAccount(id);
return success(BeanUtils.toBean(account, ErpAccountRespVO.class));
@ -94,7 +94,7 @@ public class ErpAccountController {
@GetMapping("/page")
@Operation(summary = "获得结算账户分页")
@PreAuthorize("@ss.hasPermission('erp:account:query')")
// @PreAuthorize("@ss.hasPermission('erp:account:query')")
public CommonResult<PageResult<ErpAccountRespVO>> getAccountPage(@Valid ErpAccountPageReqVO pageReqVO) {
PageResult<ErpAccountDO> pageResult = accountService.getAccountPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ErpAccountRespVO.class));

@ -92,7 +92,7 @@ public class ErpFinancePaymentController {
@GetMapping("/get")
@Operation(summary = "获得付款单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:finance-payment:query')")
// @PreAuthorize("@ss.hasPermission('erp:finance-payment:query')")
public CommonResult<ErpFinancePaymentRespVO> getFinancePayment(@RequestParam("id") Long id) {
ErpFinancePaymentDO payment = financePaymentService.getFinancePayment(id);
if (payment == null) {
@ -105,7 +105,7 @@ public class ErpFinancePaymentController {
@GetMapping("/page")
@Operation(summary = "获得付款单分页")
@PreAuthorize("@ss.hasPermission('erp:finance-payment:query')")
// @PreAuthorize("@ss.hasPermission('erp:finance-payment:query')")
public CommonResult<PageResult<ErpFinancePaymentRespVO>> getFinancePaymentPage(@Valid ErpFinancePaymentPageReqVO pageReqVO) {
PageResult<ErpFinancePaymentDO> pageResult = financePaymentService.getFinancePaymentPage(pageReqVO);
return success(buildFinancePaymentVOPageResult(pageResult));

@ -92,7 +92,7 @@ public class ErpFinanceReceiptController {
@GetMapping("/get")
@Operation(summary = "获得收款单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:finance-receipt:query')")
// @PreAuthorize("@ss.hasPermission('erp:finance-receipt:query')")
public CommonResult<ErpFinanceReceiptRespVO> getFinanceReceipt(@RequestParam("id") Long id) {
ErpFinanceReceiptDO receipt = financeReceiptService.getFinanceReceipt(id);
if (receipt == null) {
@ -105,7 +105,7 @@ public class ErpFinanceReceiptController {
@GetMapping("/page")
@Operation(summary = "获得收款单分页")
@PreAuthorize("@ss.hasPermission('erp:finance-receipt:query')")
// @PreAuthorize("@ss.hasPermission('erp:finance-receipt:query')")
public CommonResult<PageResult<ErpFinanceReceiptRespVO>> getFinanceReceiptPage(@Valid ErpFinanceReceiptPageReqVO pageReqVO) {
PageResult<ErpFinanceReceiptDO> pageResult = financeReceiptService.getFinanceReceiptPage(pageReqVO);
return success(buildFinanceReceiptVOPageResult(pageResult));

@ -71,7 +71,7 @@ public class MoldBrandController {
@GetMapping("/get")
@Operation(summary = "获得模具型号")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<MoldBrandRespVO> getMoldBrand(@RequestParam("id") Long id) {
MoldBrandRespVO respVO = moldBrandService.getMoldBrandDetail(id);
moldBrandService.fillLatestOperateDeviceName(respVO);
@ -79,14 +79,14 @@ public class MoldBrandController {
}
@GetMapping("/getBrandList")
@Operation(summary = "获得模具型号列表")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<List<MoldBrandRespVO>> getBrandList(MoldBrandPageReqVO pageReqVO) {
PageResult<MoldBrandRespVO> pageResult = moldBrandService.getMoldBrandPage(pageReqVO);
return success(pageResult.getList());
}
@GetMapping("/page")
@Operation(summary = "获得模具型号分页")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<MoldBrandPageRespVO> getMoldBrandPage(@Valid MoldBrandPageReqVO pageReqVO) {
MoldBrandPageRespVO respVO = moldBrandService.getMoldBrandPageWithStatistics(pageReqVO);
if (respVO != null && respVO.getPageResult() != null) {
@ -110,7 +110,7 @@ public class MoldBrandController {
@GetMapping("/tree")
@Operation(summary = "获得设备类型树")
@PreAuthorize("@ss.hasPermission('mes:device-type:query')")
// @PreAuthorize("@ss.hasPermission('mes:device-type:query')")
public CommonResult<List<MoldBrandTreeRespVO>> getDeviceTypeTree() {
List<MoldBrandTreeRespVO> tree = moldBrandService.getMoldBrandTree();
return success(tree);
@ -133,7 +133,7 @@ public class MoldBrandController {
@GetMapping("/mold/page")
@Operation(summary = "获得模具分页")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<PageResult<MoldRespVO>> getMoldPage(@Valid MoldPageReqVO pageReqVO) {
return success(moldBrandService.getMoldPage(pageReqVO));
}
@ -141,7 +141,7 @@ public class MoldBrandController {
@GetMapping("/mold/list")
@Operation(summary = "获得模具列表")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<List<MoldDO>> getMoldList(@Valid MoldPageReqVO pageReqVO) {
List<MoldDO> moldDOList = moldBrandService.getMoldList(pageReqVO);
return success(moldDOList);
@ -173,7 +173,7 @@ public class MoldBrandController {
@GetMapping("/mold/get")
@Operation(summary = "获得模具")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<MoldDO> getMold(@RequestParam(value = "id", required = false) Long id,
@RequestParam(value = "code", required = false) String code) {
return success(moldBrandService.getMold(id, code));
@ -207,7 +207,7 @@ public class MoldBrandController {
@GetMapping("/mold-brand-product/page")
@Operation(summary = "获得模具产品分页")
@Parameter(name = "brandId", description = "型号ID")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<PageResult<MoldProductRespVO>> getMoldBrandProductPage(PageParam pageReqVO,
@RequestParam("brandId") Long brandId) {
PageResult<MoldBrandProductDO> pageResult = moldBrandService.getMoldBrandProductPage(pageReqVO, brandId);
@ -242,7 +242,7 @@ public class MoldBrandController {
@GetMapping("/mold-brand-product/get")
@Operation(summary = "获得模具产品")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<MoldBrandProductDO> getMoldBrandProduct(@RequestParam("id") Long id) {
return success(moldBrandService.getMoldBrandProduct(id));
}

@ -69,7 +69,7 @@ public class MoldController {
@GetMapping("/get")
@Operation(summary = "获得模具")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:mold:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold:query')")
public CommonResult<MoldRespVO> getMold(@RequestParam("id") Long id) {
MoldDO mold = moldService.getMold(id);
return success(BeanUtils.toBean(mold, MoldRespVO.class));
@ -77,7 +77,7 @@ public class MoldController {
@GetMapping("/page")
@Operation(summary = "获得模具分页")
@PreAuthorize("@ss.hasPermission('erp:mold:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold:query')")
public CommonResult<PageResult<MoldRespVO>> getMoldPage(@Valid MoldPageReqVO pageReqVO) {
PageResult<MoldDO> pageResult = moldService.getMoldPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MoldRespVO.class));
@ -107,7 +107,7 @@ public class MoldController {
@GetMapping("/getMoldListByStatus")
@Operation(summary = "根据状态获得模具列表")
@Parameter(name = "id", description = "设备id", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-operate:query')")
// @PreAuthorize("@ss.hasPermission('mes:mold-operate:query')")
public CommonResult<List<MoldDO>> getMoldListByStatus(@RequestParam("status") Long status) {
List<MoldDO> moldDO = moldService.getMoldListByStatus(status);
return success(moldDO);

@ -78,7 +78,7 @@ public class MoldPressureNetRecordController {
@GetMapping("/get")
@Operation(summary = "获得子模具压网记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:mold-pressure-net-record:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-pressure-net-record:query')")
public CommonResult<MoldPressureNetRecordRespVO> getMoldPressureNetRecord(@RequestParam("id") Long id) {
MoldPressureNetRecordDO record = moldPressureNetRecordService.getMoldPressureNetRecord(id);
return success(BeanUtils.toBean(record, MoldPressureNetRecordRespVO.class));
@ -86,7 +86,7 @@ public class MoldPressureNetRecordController {
@GetMapping("/page")
@Operation(summary = "获得子模具压网记录分页")
@PreAuthorize("@ss.hasPermission('erp:mold-pressure-net-record:query')")
// @PreAuthorize("@ss.hasPermission('erp:mold-pressure-net-record:query')")
public CommonResult<PageResult<MoldPressureNetRecordRespVO>> getMoldPressureNetRecordPage(@Valid MoldPressureNetRecordPageReqVO pageReqVO) {
PageResult<MoldPressureNetRecordDO> pageResult = moldPressureNetRecordService.getMoldPressureNetRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MoldPressureNetRecordRespVO.class));

@ -73,7 +73,7 @@ public class ErpPalletController {
@GetMapping("/get")
@Operation(summary = "获得托盘")
@Parameter(name = "id", description = "编号", required = true, example = "1")
@PreAuthorize("@ss.hasPermission('erp:pallet:query')")
// @PreAuthorize("@ss.hasPermission('erp:pallet:query')")
public CommonResult<ErpPalletRespVO> getPallet(@RequestParam("id") Long id) {
ErpPalletDO pallet = palletService.getPallet(id);
return success(buildPalletRespVO(pallet));
@ -81,7 +81,7 @@ public class ErpPalletController {
@GetMapping("/page")
@Operation(summary = "获得托盘分页")
@PreAuthorize("@ss.hasPermission('erp:pallet:query')")
// @PreAuthorize("@ss.hasPermission('erp:pallet:query')")
public CommonResult<ErpPalletPageRespVO> getPalletPage(@Valid ErpPalletPageReqVO pageReqVO) {
ErpPalletPageRespVO respVO = palletService.getPalletPageWithStatistics(pageReqVO);
PageResult<ErpPalletDO> doPage = new PageResult<>(BeanUtils.toBean(respVO.getList(), ErpPalletDO.class), respVO.getTotal());

@ -72,7 +72,7 @@ public class ErpPackagingSchemeController {
@GetMapping("/get")
@Operation(summary = "获得包装方案")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:packaging-scheme:query')")
// @PreAuthorize("@ss.hasPermission('erp:packaging-scheme:query')")
public CommonResult<ErpPackagingSchemeRespVO> getPackagingScheme(@RequestParam("id") Long id) {
ErpPackagingSchemeDO scheme = packagingSchemeService.getPackagingScheme(id);
return success(BeanUtils.toBean(scheme, ErpPackagingSchemeRespVO.class));
@ -80,7 +80,7 @@ public class ErpPackagingSchemeController {
@GetMapping("/page")
@Operation(summary = "获得包装方案分页")
@PreAuthorize("@ss.hasPermission('erp:packaging-scheme:query')")
// @PreAuthorize("@ss.hasPermission('erp:packaging-scheme:query')")
public CommonResult<PageResult<ErpPackagingSchemeRespVO>> getPackagingSchemePage(@Valid ErpPackagingSchemePageReqVO pageReqVO) {
PageResult<ErpPackagingSchemeDO> pageResult = packagingSchemeService.getPackagingSchemePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ErpPackagingSchemeRespVO.class));

@ -68,14 +68,14 @@ public class ErpProductCategoryController {
@GetMapping("/get")
@Operation(summary = "获得产品分类")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:product-category:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-category:query')")
public CommonResult<ErpProductCategoryRespVO> getProductCategory(@RequestParam("id") Long id) {
return success(productCategoryService.getProductCategoryResp(id));
}
@GetMapping("/list")
@Operation(summary = "获得产品分类列表")
@PreAuthorize("@ss.hasPermission('erp:product-category:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-category:query')")
public CommonResult<List<ErpProductCategoryRespVO>> getProductCategoryList(@Valid ErpProductCategoryListReqVO listReqVO) {
List<ErpProductCategoryDO> list = productCategoryService.getProductCategoryList(listReqVO);
return success(BeanUtils.toBean(list, ErpProductCategoryRespVO.class));
@ -83,7 +83,7 @@ public class ErpProductCategoryController {
@GetMapping("/group-tree")
@Operation(summary = "按类型分组获得产品分类树")
@PreAuthorize("@ss.hasPermission('erp:product-category:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-category:query')")
public CommonResult<List<ErpProductCategoryTypeGroupRespVO>> getProductCategoryGroupTree(@Valid ErpProductCategoryListReqVO listReqVO) {
List<ErpProductCategoryDO> list = productCategoryService.getProductCategoryList(listReqVO);
Map<Integer, List<ErpProductCategoryDO>> typeMap = new LinkedHashMap<>();

@ -104,7 +104,7 @@ public class ErpProductController {
@GetMapping("/get")
@Operation(summary = "获得产品")
@PreAuthorize("@ss.hasPermission('erp:product:query')")
// @PreAuthorize("@ss.hasPermission('erp:product:query')")
public CommonResult<ErpProductRespVO> getProduct(@RequestParam(value = "id", required = false) Long id,
@RequestParam(value = "code", required = false) String code) {
return success(productService.getProduct(id, code));
@ -120,7 +120,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));
}

@ -82,7 +82,7 @@ public class ErpProductUnitController {
@GetMapping("/get")
@Operation(summary = "获得产品单位")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:product-unit:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-unit:query')")
public CommonResult<ErpProductUnitRespVO> getProductUnit(@RequestParam("id") Long id) {
ErpProductUnitDO productUnit = productUnitService.getProductUnit(id);
return success(BeanUtils.toBean(productUnit, ErpProductUnitRespVO.class));
@ -90,7 +90,7 @@ public class ErpProductUnitController {
@GetMapping("/page")
@Operation(summary = "获得产品单位分页")
@PreAuthorize("@ss.hasPermission('erp:product-unit:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-unit:query')")
public CommonResult<PageResult<ErpProductUnitRespVO>> getProductUnitPage(@Valid ErpProductUnitPageReqVO pageReqVO) {
PageResult<ErpProductUnitDO> pageResult = productUnitService.getProductUnitPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ErpProductUnitRespVO.class));

@ -66,7 +66,7 @@ public class ProductDeviceRelController {
@GetMapping("/get")
@Operation(summary = "获得产品-设备关联")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:product-device-rel:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-device-rel:query')")
public CommonResult<ProductDeviceRelRespVO> getProductDeviceRel(@RequestParam("id") Long id) {
ProductDeviceRelDO productDeviceRel = productDeviceRelService.getProductDeviceRel(id);
return success(BeanUtils.toBean(productDeviceRel, ProductDeviceRelRespVO.class));
@ -74,7 +74,7 @@ public class ProductDeviceRelController {
@GetMapping("/page")
@Operation(summary = "获得产品-设备关联分页")
@PreAuthorize("@ss.hasPermission('erp:product-device-rel:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-device-rel:query')")
public CommonResult<PageResult<ProductDeviceRelRespVO>> getProductDeviceRelPage(@Valid ProductDeviceRelPageReqVO pageReqVO) {
PageResult<ProductDeviceRelDO> pageResult = productDeviceRelService.getProductDeviceRelPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProductDeviceRelRespVO.class));

@ -65,7 +65,7 @@ public class ProductMoldRelController {
@GetMapping("/get")
@Operation(summary = "获得产品-模具关联")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:product-mold-rel:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-mold-rel:query')")
public CommonResult<ProductMoldRelRespVO> getProductMoldRel(@RequestParam("id") Long id) {
ProductMoldRelDO productMoldRel = productMoldRelService.getProductMoldRel(id);
return success(BeanUtils.toBean(productMoldRel, ProductMoldRelRespVO.class));
@ -73,7 +73,7 @@ public class ProductMoldRelController {
@GetMapping("/page")
@Operation(summary = "获得产品-模具关联分页")
@PreAuthorize("@ss.hasPermission('erp:product-mold-rel:query')")
// @PreAuthorize("@ss.hasPermission('erp:product-mold-rel:query')")
public CommonResult<PageResult<ProductMoldRelRespVO>> getProductMoldRelPage(@Valid ProductMoldRelPageReqVO pageReqVO) {
PageResult<ProductMoldRelDO> pageResult = productMoldRelService.getProductMoldRelPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProductMoldRelRespVO.class));

@ -96,7 +96,7 @@ public class ErpPurchaseInController {
@GetMapping("/get")
@Operation(summary = "获得采购入库")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:purchase-in:query')")
// @PreAuthorize("@ss.hasPermission('erp:purchase-in:query')")
public CommonResult<ErpPurchaseInRespVO> getPurchaseIn(@RequestParam("id") Long id) {
ErpPurchaseInDO purchaseIn = purchaseInService.getPurchaseIn(id);
if (purchaseIn == null) {
@ -116,7 +116,7 @@ public class ErpPurchaseInController {
@GetMapping("/page")
@Operation(summary = "获得采购入库分页")
@PreAuthorize("@ss.hasPermission('erp:purchase-in:query')")
// @PreAuthorize("@ss.hasPermission('erp:purchase-in:query')")
public CommonResult<PageResult<ErpPurchaseInRespVO>> getPurchaseInPage(@Valid ErpPurchaseInPageReqVO pageReqVO) {
PageResult<ErpPurchaseInDO> pageResult = purchaseInService.getPurchaseInPage(pageReqVO);
return success(buildPurchaseInVOPageResult(pageResult));

@ -95,7 +95,7 @@ public class ErpPurchaseOrderController {
@GetMapping("/get")
@Operation(summary = "获得采购订单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:purchase-order:query')")
// @PreAuthorize("@ss.hasPermission('erp:purchase-order:query')")
public CommonResult<ErpPurchaseOrderRespVO> getPurchaseOrder(@RequestParam("id") Long id) {
ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id);
if (purchaseOrder == null) {
@ -115,7 +115,7 @@ public class ErpPurchaseOrderController {
@GetMapping("/page")
@Operation(summary = "获得采购订单分页")
@PreAuthorize("@ss.hasPermission('erp:purchase-order:query')")
// @PreAuthorize("@ss.hasPermission('erp:purchase-order:query')")
public CommonResult<PageResult<ErpPurchaseOrderRespVO>> getPurchaseOrderPage(@Valid ErpPurchaseOrderPageReqVO pageReqVO) {
PageResult<ErpPurchaseOrderDO> pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO);
return success(buildPurchaseOrderVOPageResult(pageResult));

@ -96,7 +96,7 @@ public class ErpPurchaseReturnController {
@GetMapping("/get")
@Operation(summary = "获得采购退货")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:purchase-return:query')")
// @PreAuthorize("@ss.hasPermission('erp:purchase-return:query')")
public CommonResult<ErpPurchaseReturnRespVO> getPurchaseReturn(@RequestParam("id") Long id) {
ErpPurchaseReturnDO purchaseReturn = purchaseReturnService.getPurchaseReturn(id);
if (purchaseReturn == null) {
@ -116,7 +116,7 @@ public class ErpPurchaseReturnController {
@GetMapping("/page")
@Operation(summary = "获得采购退货分页")
@PreAuthorize("@ss.hasPermission('erp:purchase-return:query')")
// @PreAuthorize("@ss.hasPermission('erp:purchase-return:query')")
public CommonResult<PageResult<ErpPurchaseReturnRespVO>> getPurchaseReturnPage(@Valid ErpPurchaseReturnPageReqVO pageReqVO) {
PageResult<ErpPurchaseReturnDO> pageResult = purchaseReturnService.getPurchaseReturnPage(pageReqVO);
return success(buildPurchaseReturnVOPageResult(pageResult));

@ -65,7 +65,7 @@ public class ErpSupplierController {
@GetMapping("/get")
@Operation(summary = "获得供应商")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:supplier:query')")
// @PreAuthorize("@ss.hasPermission('erp:supplier:query')")
public CommonResult<ErpSupplierRespVO> getSupplier(@RequestParam("id") Long id) {
ErpSupplierDO supplier = supplierService.getSupplier(id);
return success(BeanUtils.toBean(supplier, ErpSupplierRespVO.class));
@ -73,7 +73,7 @@ public class ErpSupplierController {
@GetMapping("/page")
@Operation(summary = "获得供应商分页")
@PreAuthorize("@ss.hasPermission('erp:supplier:query')")
// @PreAuthorize("@ss.hasPermission('erp:supplier:query')")
public CommonResult<PageResult<ErpSupplierRespVO>> getSupplierPage(@Valid ErpSupplierPageReqVO pageReqVO) {
PageResult<ErpSupplierDO> pageResult = supplierService.getSupplierPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ErpSupplierRespVO.class));

@ -65,7 +65,7 @@ public class ErpCustomerController {
@GetMapping("/get")
@Operation(summary = "获得客户")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:customer:query')")
// @PreAuthorize("@ss.hasPermission('erp:customer:query')")
public CommonResult<ErpCustomerRespVO> getCustomer(@RequestParam("id") Long id) {
ErpCustomerDO customer = customerService.getCustomer(id);
return success(BeanUtils.toBean(customer, ErpCustomerRespVO.class));
@ -73,7 +73,7 @@ public class ErpCustomerController {
@GetMapping("/page")
@Operation(summary = "获得客户分页")
@PreAuthorize("@ss.hasPermission('erp:customer:query')")
// @PreAuthorize("@ss.hasPermission('erp:customer:query')")
public CommonResult<PageResult<ErpCustomerRespVO>> getCustomerPage(@Valid ErpCustomerPageReqVO pageReqVO) {
PageResult<ErpCustomerDO> pageResult = customerService.getCustomerPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ErpCustomerRespVO.class));

@ -95,7 +95,7 @@ public class ErpSaleOrderController {
@GetMapping("/get")
@Operation(summary = "获得销售订单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
// @PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
public CommonResult<ErpSaleOrderRespVO> getSaleOrder(@RequestParam("id") Long id) {
ErpSaleOrderDO saleOrder = saleOrderService.getSaleOrder(id);
if (saleOrder == null) {
@ -115,7 +115,7 @@ public class ErpSaleOrderController {
@GetMapping("/page")
@Operation(summary = "获得销售订单分页")
@PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
// @PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
public CommonResult<PageResult<ErpSaleOrderRespVO>> getSaleOrderPage(@Valid ErpSaleOrderPageReqVO pageReqVO) {
PageResult<ErpSaleOrderDO> pageResult = saleOrderService.getSaleOrderPage(pageReqVO);
return success(buildSaleOrderVOPageResult(pageResult));

@ -96,7 +96,7 @@ public class ErpSaleOutController {
@GetMapping("/get")
@Operation(summary = "获得销售出库")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
// @PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
public CommonResult<ErpSaleOutRespVO> getSaleOut(@RequestParam("id") Long id) {
ErpSaleOutDO saleOut = saleOutService.getSaleOut(id);
if (saleOut == null) {
@ -116,7 +116,7 @@ public class ErpSaleOutController {
@GetMapping("/page")
@Operation(summary = "获得销售出库分页")
@PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
// @PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
public CommonResult<PageResult<ErpSaleOutRespVO>> getSaleOutPage(@Valid ErpSaleOutPageReqVO pageReqVO) {
PageResult<ErpSaleOutDO> pageResult = saleOutService.getSaleOutPage(pageReqVO);
return success(buildSaleOutVOPageResult(pageResult));

@ -96,7 +96,7 @@ public class ErpSaleReturnController {
@GetMapping("/get")
@Operation(summary = "获得销售退货")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:sale-return:query')")
// @PreAuthorize("@ss.hasPermission('erp:sale-return:query')")
public CommonResult<ErpSaleReturnRespVO> getSaleReturn(@RequestParam("id") Long id) {
ErpSaleReturnDO saleReturn = saleReturnService.getSaleReturn(id);
if (saleReturn == null) {
@ -116,7 +116,7 @@ public class ErpSaleReturnController {
@GetMapping("/page")
@Operation(summary = "获得销售退货分页")
@PreAuthorize("@ss.hasPermission('erp:sale-return:query')")
// @PreAuthorize("@ss.hasPermission('erp:sale-return:query')")
public CommonResult<PageResult<ErpSaleReturnRespVO>> getSaleReturnPage(@Valid ErpSaleReturnPageReqVO pageReqVO) {
PageResult<ErpSaleReturnDO> pageResult = saleReturnService.getSaleReturnPage(pageReqVO);
return success(buildSaleReturnVOPageResult(pageResult));

@ -120,7 +120,7 @@ public class ErpStockCheckController {
@GetMapping("/approve-record-list")
@Operation(summary = "获得库存盘点单审核记录")
@PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
public CommonResult<List<ErpStockCheckApproveRecordRespVO>> getApproveRecordList(@RequestParam("id") Long id) {
return success(buildApproveRecordRespList(stockCheckService.getStockCheckApproveRecordList(id)));
}
@ -151,7 +151,7 @@ public class ErpStockCheckController {
@GetMapping("/get")
@Operation(summary = "获得库存盘点单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
public CommonResult<ErpStockCheckRespVO> getStockCheck(@RequestParam("id") Long id) {
ErpStockCheckDO stockCheck = stockCheckService.getStockCheck(id);
if (stockCheck == null) {
@ -164,7 +164,7 @@ public class ErpStockCheckController {
@GetMapping("/page")
@Operation(summary = "获得库存盘点单分页")
@PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
public CommonResult<ErpStockCheckPageRespVO> getStockCheckPage(@Valid ErpStockCheckPageReqVO pageReqVO) {
ErpStockCheckPageRespVO respVO = stockCheckService.getStockCheckPageWithStatistics(pageReqVO);
PageResult<ErpStockCheckDO> doPage = new PageResult<>(BeanUtils.toBean(respVO.getList(), ErpStockCheckDO.class), respVO.getTotal());
@ -187,7 +187,7 @@ public class ErpStockCheckController {
@GetMapping("/record-page")
@Operation(summary = "获得库存盘点记录分页")
@PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
public CommonResult<PageResult<ErpStockCheckRecordRespVO>> getStockCheckRecordPage(
@Valid ErpStockCheckRecordPageReqVO pageReqVO) {
return success(buildStockCheckRecordVOPageResult(stockCheckService.getStockCheckRecordPage(pageReqVO)));

@ -108,7 +108,7 @@ public class ErpStockController {
@GetMapping("/page")
@Operation(summary = "获得产品库存分页")
@PreAuthorize("@ss.isInnerProfile() || @ss.hasPermission('erp:stock:query')")
// @PreAuthorize("@ss.isInnerProfile() || @ss.hasPermission('erp:stock:query')")
public CommonResult<PageResult<ErpStockRespVO>> getStockPage(@Valid ErpStockPageReqVO pageReqVO) {
ErpStockPageReqVO queryReqVO = BeanUtils.toBean(pageReqVO, ErpStockPageReqVO.class);
queryReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);

@ -147,7 +147,7 @@ public class ErpStockInController {
@GetMapping("/approve-record-list")
@Operation(summary = "获得其它入库单审核记录")
@PreAuthorize("@ss.hasPermission('erp:stock-in:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-in:query')")
public CommonResult<List<ErpStockInApproveRecordRespVO>> getApproveRecordList(@RequestParam("id") Long id) {
return success(buildApproveRecordRespList(stockInService.getStockInApproveRecordList(id)));
}
@ -164,7 +164,7 @@ public class ErpStockInController {
@GetMapping("/get")
@Operation(summary = "获得其它入库单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:stock-in:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-in:query')")
public CommonResult<ErpStockInRespVO> getStockIn(@RequestParam("id") Long id) {
ErpStockInDO stockIn = stockInService.getStockIn(id);
if (stockIn == null) {
@ -177,7 +177,7 @@ public class ErpStockInController {
@GetMapping("/page")
@Operation(summary = "获得其它入库单分页")
@PreAuthorize("@ss.hasPermission('erp:stock-in:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-in:query')")
public CommonResult<ErpStockInPageRespVO> getStockInPage(@Valid ErpStockInPageReqVO pageReqVO) {
fillPageReqDefault(pageReqVO);
ErpStockInPageRespVO respVO = stockInService.getStockInPageWithStatistics(pageReqVO);

@ -126,14 +126,14 @@ public class ErpStockMoveController {
@GetMapping("/approve-record-list")
@Operation(summary = "获得库存调拨单审核记录")
@PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
public CommonResult<List<ErpStockMoveApproveRecordRespVO>> getApproveRecordList(@RequestParam("id") Long id) {
return success(buildApproveRecordRespList(stockMoveService.getStockMoveApproveRecordList(id)));
}
@GetMapping("/product-stock-list")
@Operation(summary = "获得产品仓库库区库存列表")
@PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
public CommonResult<List<ErpStockMoveProductStockRespVO>> getProductStockList(
@RequestParam("productId") Long productId,
@RequestParam(value = "warehouseId", required = false) Long warehouseId) {
@ -154,7 +154,7 @@ public class ErpStockMoveController {
@GetMapping("/get")
@Operation(summary = "获得库存调拨单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
public CommonResult<ErpStockMoveRespVO> getStockMove(@RequestParam("id") Long id) {
ErpStockMoveDO stockMove = stockMoveService.getStockMove(id);
if (stockMove == null) {
@ -167,7 +167,7 @@ public class ErpStockMoveController {
@GetMapping("/page")
@Operation(summary = "获得库存调拨单分页")
@PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
public CommonResult<ErpStockMovePageRespVO> getStockMovePage(@Valid ErpStockMovePageReqVO pageReqVO) {
ErpStockMovePageRespVO respVO = stockMoveService.getStockMovePageWithStatistics(pageReqVO);
PageResult<ErpStockMoveDO> doPage = new PageResult<>(BeanUtils.toBean(respVO.getList(), ErpStockMoveDO.class), respVO.getTotal());

@ -150,7 +150,7 @@ public class ErpStockOutController {
@GetMapping("/approve-record-list")
@Operation(summary = "获得其它出库单审核记录")
@PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
public CommonResult<List<ErpStockOutApproveRecordRespVO>> getApproveRecordList(@RequestParam("id") Long id) {
return success(buildApproveRecordRespList(stockOutService.getStockOutApproveRecordList(id)));
}
@ -177,7 +177,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) {
@ -192,7 +192,7 @@ public class ErpStockOutController {
@GetMapping("/page")
@Operation(summary = "获得其它出库单分页")
@PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
public CommonResult<ErpStockOutPageRespVO> getStockOutPage(@Valid ErpStockOutPageReqVO pageReqVO) {
fillPageReqDefault(pageReqVO);
applyItemFilter(pageReqVO);

@ -71,7 +71,7 @@ public class ErpStockRecordController {
@GetMapping("/get")
@Operation(summary = "获得产品库存明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:stock-record:query')")
// @PreAuthorize("@ss.hasPermission('erp:stock-record:query')")
public CommonResult<ErpStockRecordRespVO> getStockRecord(@RequestParam("id") Long id) {
ErpStockRecordDO stockRecord = stockRecordService.getStockRecord(id);
return success(buildStockRecordRespVO(stockRecord));
@ -79,7 +79,7 @@ public class ErpStockRecordController {
@GetMapping("/page")
@Operation(summary = "获得产品库存明细分页")
@PreAuthorize("@ss.isInnerProfile() || @ss.hasPermission('erp:stock-record:query')")
// @PreAuthorize("@ss.isInnerProfile() || @ss.hasPermission('erp:stock-record:query')")
public CommonResult<PageResult<ErpStockRecordRespVO>> getStockRecordPage(@Valid ErpStockRecordPageReqVO pageReqVO) {
PageResult<ErpStockRecordDO> pageResult = stockRecordService.getStockRecordPage(pageReqVO);
return success(buildStockRecrodVOPageResult(pageResult));

@ -84,14 +84,14 @@ public class ErpWarehouseController {
@GetMapping("/get")
@Operation(summary = "获得仓库")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
// @PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
public CommonResult<ErpWarehouseRespVO> getWarehouse(@RequestParam("id") Long id) {
return success(warehouseService.getWarehouseDetail(id));
}
@GetMapping("/page")
@Operation(summary = "获得仓库分页")
@PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
// @PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
public CommonResult<PageResult<ErpWarehouseRespVO>> getWarehousePage(@Valid ErpWarehousePageReqVO pageReqVO) {
PageResult<ErpWarehouseDO> pageResult = warehouseService.getWarehousePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ErpWarehouseRespVO.class));

@ -77,7 +77,7 @@ public class WarehouseAreaController {
@GetMapping("/get")
@Operation(summary = "获得ERP 库区信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')")
// @PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')")
public CommonResult<WarehouseAreaRespVO> getWarehouseArea(@RequestParam("id") Long id) {
WarehouseAreaDO warehouseArea = warehouseAreaService.getWarehouseArea(id);
WarehouseAreaRespVO respVO = BeanUtils.toBean(warehouseArea, WarehouseAreaRespVO.class);
@ -88,7 +88,7 @@ public class WarehouseAreaController {
@GetMapping("/page")
@Operation(summary = "获得ERP 库区信息分页")
@PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')")
// @PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')")
public CommonResult<PageResult<WarehouseAreaRespVO>> getWarehouseAreaPage(@Valid WarehouseAreaPageReqVO pageReqVO) {
PageResult<WarehouseAreaDO> pageResult = warehouseAreaService.getWarehouseAreaPage(pageReqVO);
PageResult<WarehouseAreaRespVO> result = BeanUtils.toBean(pageResult, WarehouseAreaRespVO.class);

@ -67,7 +67,7 @@ public class WarehouseLocationController {
@GetMapping("/get")
@Operation(summary = "获得ERP 库位信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:warehouse-location:query')")
// @PreAuthorize("@ss.hasPermission('erp:warehouse-location:query')")
public CommonResult<WarehouseLocationRespVO> getWarehouseLocation(@RequestParam("id") Long id) {
WarehouseLocationDO warehouseLocation = warehouseLocationService.getWarehouseLocation(id);
return success(BeanUtils.toBean(warehouseLocation, WarehouseLocationRespVO.class));
@ -75,7 +75,7 @@ public class WarehouseLocationController {
@GetMapping("/page")
@Operation(summary = "获得ERP 库位信息分页")
@PreAuthorize("@ss.hasPermission('erp:warehouse-location:query')")
// @PreAuthorize("@ss.hasPermission('erp:warehouse-location:query')")
public CommonResult<PageResult<WarehouseLocationRespVO>> getWarehouseLocationPage(@Valid WarehouseLocationPageReqVO pageReqVO) {
PageResult<WarehouseLocationDO> pageResult = warehouseLocationService.getWarehouseLocationPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, WarehouseLocationRespVO.class));

@ -64,7 +64,7 @@ public class CodegenController {
@GetMapping("/table/list")
@Operation(summary = "获得表定义列表")
@Parameter(name = "dataSourceConfigId", description = "数据源配置的编号", required = true, example = "1")
@PreAuthorize("@ss.hasPermission('infra:codegen:query')")
// @PreAuthorize("@ss.hasPermission('infra:codegen:query')")
public CommonResult<List<CodegenTableRespVO>> getCodegenTableList(@RequestParam(value = "dataSourceConfigId") Long dataSourceConfigId) {
List<CodegenTableDO> list = codegenService.getCodegenTableList(dataSourceConfigId);
return success(BeanUtils.toBean(list, CodegenTableRespVO.class));
@ -72,7 +72,7 @@ public class CodegenController {
@GetMapping("/table/page")
@Operation(summary = "获得表定义分页")
@PreAuthorize("@ss.hasPermission('infra:codegen:query')")
// @PreAuthorize("@ss.hasPermission('infra:codegen:query')")
public CommonResult<PageResult<CodegenTableRespVO>> getCodegenTablePage(@Valid CodegenTablePageReqVO pageReqVO) {
PageResult<CodegenTableDO> pageResult = codegenService.getCodegenTablePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, CodegenTableRespVO.class));
@ -81,7 +81,7 @@ public class CodegenController {
@GetMapping("/detail")
@Operation(summary = "获得表和字段的明细")
@Parameter(name = "tableId", description = "表编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:codegen:query')")
// @PreAuthorize("@ss.hasPermission('infra:codegen:query')")
public CommonResult<CodegenDetailRespVO> getCodegenDetail(@RequestParam("tableId") Long tableId) {
CodegenTableDO table = codegenService.getCodegenTable(tableId);
List<CodegenColumnDO> columns = codegenService.getCodegenColumnListByTableId(tableId);
@ -91,7 +91,7 @@ public class CodegenController {
@Operation(summary = "基于数据库的表结构,创建代码生成器的表和字段定义")
@PostMapping("/create-list")
@PreAuthorize("@ss.hasPermission('infra:codegen:create')")
// @PreAuthorize("@ss.hasPermission('infra:codegen:create')")
public CommonResult<List<Long>> createCodegenList(@Valid @RequestBody CodegenCreateListReqVO reqVO) {
return success(codegenService.createCodegenList(getLoginUserId(), reqVO));
}

@ -63,7 +63,7 @@ public class ConfigController {
@GetMapping(value = "/get")
@Operation(summary = "获得参数配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:config:query')")
// @PreAuthorize("@ss.hasPermission('infra:config:query')")
public CommonResult<ConfigRespVO> getConfig(@RequestParam("id") Long id) {
return success(ConfigConvert.INSTANCE.convert(configService.getConfig(id)));
}
@ -84,7 +84,7 @@ public class ConfigController {
@GetMapping("/page")
@Operation(summary = "获取参数配置分页")
@PreAuthorize("@ss.hasPermission('infra:config:query')")
// @PreAuthorize("@ss.hasPermission('infra:config:query')")
public CommonResult<PageResult<ConfigRespVO>> getConfigPage(@Valid ConfigPageReqVO pageReqVO) {
PageResult<ConfigDO> page = configService.getConfigPage(pageReqVO);
return success(ConfigConvert.INSTANCE.convertPage(page));

@ -55,7 +55,7 @@ public class DataSourceConfigController {
@GetMapping("/get")
@Operation(summary = "获得数据源配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:data-source-config:query')")
// @PreAuthorize("@ss.hasPermission('infra:data-source-config:query')")
public CommonResult<DataSourceConfigRespVO> getDataSourceConfig(@RequestParam("id") Long id) {
DataSourceConfigDO config = dataSourceConfigService.getDataSourceConfig(id);
return success(BeanUtils.toBean(config, DataSourceConfigRespVO.class));
@ -63,7 +63,7 @@ public class DataSourceConfigController {
@GetMapping("/list")
@Operation(summary = "获得数据源配置列表")
@PreAuthorize("@ss.hasPermission('infra:data-source-config:query')")
// @PreAuthorize("@ss.hasPermission('infra:data-source-config:query')")
public CommonResult<List<DataSourceConfigRespVO>> getDataSourceConfigList() {
List<DataSourceConfigDO> list = dataSourceConfigService.getDataSourceConfigList();
return success(BeanUtils.toBean(list, DataSourceConfigRespVO.class));

@ -63,7 +63,7 @@ public class Demo01ContactController {
@GetMapping("/get")
@Operation(summary = "获得示例联系人")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:demo01-contact:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo01-contact:query')")
public CommonResult<Demo01ContactRespVO> getDemo01Contact(@RequestParam("id") Long id) {
Demo01ContactDO demo01Contact = demo01ContactService.getDemo01Contact(id);
return success(BeanUtils.toBean(demo01Contact, Demo01ContactRespVO.class));
@ -71,7 +71,7 @@ public class Demo01ContactController {
@GetMapping("/page")
@Operation(summary = "获得示例联系人分页")
@PreAuthorize("@ss.hasPermission('infra:demo01-contact:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo01-contact:query')")
public CommonResult<PageResult<Demo01ContactRespVO>> getDemo01ContactPage(@Valid Demo01ContactPageReqVO pageReqVO) {
PageResult<Demo01ContactDO> pageResult = demo01ContactService.getDemo01ContactPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, Demo01ContactRespVO.class));

@ -61,7 +61,7 @@ public class Demo02CategoryController {
@GetMapping("/get")
@Operation(summary = "获得示例分类")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:demo02-category:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo02-category:query')")
public CommonResult<Demo02CategoryRespVO> getDemo02Category(@RequestParam("id") Long id) {
Demo02CategoryDO demo02Category = demo02CategoryService.getDemo02Category(id);
return success(BeanUtils.toBean(demo02Category, Demo02CategoryRespVO.class));
@ -69,7 +69,7 @@ public class Demo02CategoryController {
@GetMapping("/list")
@Operation(summary = "获得示例分类列表")
@PreAuthorize("@ss.hasPermission('infra:demo02-category:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo02-category:query')")
public CommonResult<List<Demo02CategoryRespVO>> getDemo02CategoryList(@Valid Demo02CategoryListReqVO listReqVO) {
List<Demo02CategoryDO> list = demo02CategoryService.getDemo02CategoryList(listReqVO);
return success(BeanUtils.toBean(list, Demo02CategoryRespVO.class));

@ -65,7 +65,7 @@ public class Demo03StudentController {
@GetMapping("/get")
@Operation(summary = "获得学生")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<Demo03StudentRespVO> getDemo03Student(@RequestParam("id") Long id) {
Demo03StudentDO demo03Student = demo03StudentService.getDemo03Student(id);
return success(BeanUtils.toBean(demo03Student, Demo03StudentRespVO.class));
@ -73,7 +73,7 @@ public class Demo03StudentController {
@GetMapping("/page")
@Operation(summary = "获得学生分页")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<PageResult<Demo03StudentRespVO>> getDemo03StudentPage(@Valid Demo03StudentPageReqVO pageReqVO) {
PageResult<Demo03StudentDO> pageResult = demo03StudentService.getDemo03StudentPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, Demo03StudentRespVO.class));
@ -97,7 +97,7 @@ public class Demo03StudentController {
@GetMapping("/demo03-course/page")
@Operation(summary = "获得学生课程分页")
@Parameter(name = "studentId", description = "学生编号")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<PageResult<Demo03CourseDO>> getDemo03CoursePage(PageParam pageReqVO,
@RequestParam("studentId") Long studentId) {
return success(demo03StudentService.getDemo03CoursePage(pageReqVO, studentId));
@ -130,7 +130,7 @@ public class Demo03StudentController {
@GetMapping("/demo03-course/get")
@Operation(summary = "获得学生课程")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<Demo03CourseDO> getDemo03Course(@RequestParam("id") Long id) {
return success(demo03StudentService.getDemo03Course(id));
}
@ -138,7 +138,7 @@ public class Demo03StudentController {
@GetMapping("/demo03-course/list-by-student-id")
@Operation(summary = "获得学生课程列表")
@Parameter(name = "studentId", description = "学生编号")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<List<Demo03CourseDO>> getDemo03CourseListByStudentId(@RequestParam("studentId") Long studentId) {
return success(demo03StudentService.getDemo03CourseListByStudentId(studentId));
}
@ -148,7 +148,7 @@ public class Demo03StudentController {
@GetMapping("/demo03-grade/page")
@Operation(summary = "获得学生班级分页")
@Parameter(name = "studentId", description = "学生编号")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<PageResult<Demo03GradeDO>> getDemo03GradePage(PageParam pageReqVO,
@RequestParam("studentId") Long studentId) {
return success(demo03StudentService.getDemo03GradePage(pageReqVO, studentId));
@ -181,7 +181,7 @@ public class Demo03StudentController {
@GetMapping("/demo03-grade/get")
@Operation(summary = "获得学生班级")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
// @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<Demo03GradeDO> getDemo03Grade(@RequestParam("id") Long id) {
return success(demo03StudentService.getDemo03Grade(id));
}

@ -64,7 +64,7 @@ public class FileConfigController {
@GetMapping("/get")
@Operation(summary = "获得文件配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:file-config:query')")
// @PreAuthorize("@ss.hasPermission('infra:file-config:query')")
public CommonResult<FileConfigRespVO> getFileConfig(@RequestParam("id") Long id) {
FileConfigDO config = fileConfigService.getFileConfig(id);
return success(BeanUtils.toBean(config, FileConfigRespVO.class));
@ -72,7 +72,7 @@ public class FileConfigController {
@GetMapping("/page")
@Operation(summary = "获得文件配置分页")
@PreAuthorize("@ss.hasPermission('infra:file-config:query')")
// @PreAuthorize("@ss.hasPermission('infra:file-config:query')")
public CommonResult<PageResult<FileConfigRespVO>> getFileConfigPage(@Valid FileConfigPageReqVO pageVO) {
PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(pageVO);
return success(BeanUtils.toBean(pageResult, FileConfigRespVO.class));

@ -96,7 +96,7 @@ public class FileController {
@GetMapping("/page")
@Operation(summary = "获得文件分页")
@PreAuthorize("@ss.hasPermission('infra:file:query')")
// @PreAuthorize("@ss.hasPermission('infra:file:query')")
public CommonResult<PageResult<FileRespVO>> getFilePage(@Valid FilePageReqVO pageVO) {
PageResult<FileDO> pageResult = fileService.getFilePage(pageVO);
return success(BeanUtils.toBean(pageResult, FileRespVO.class));

@ -101,7 +101,7 @@ public class JobController {
@GetMapping("/get")
@Operation(summary = "获得定时任务")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:job:query')")
// @PreAuthorize("@ss.hasPermission('infra:job:query')")
public CommonResult<JobRespVO> getJob(@RequestParam("id") Long id) {
JobDO job = jobService.getJob(id);
return success(BeanUtils.toBean(job, JobRespVO.class));
@ -109,7 +109,7 @@ public class JobController {
@GetMapping("/page")
@Operation(summary = "获得定时任务分页")
@PreAuthorize("@ss.hasPermission('infra:job:query')")
// @PreAuthorize("@ss.hasPermission('infra:job:query')")
public CommonResult<PageResult<JobRespVO>> getJobPage(@Valid JobPageReqVO pageVO) {
PageResult<JobDO> pageResult = jobService.getJobPage(pageVO);
return success(BeanUtils.toBean(pageResult, JobRespVO.class));

@ -41,7 +41,7 @@ public class JobLogController {
@GetMapping("/get")
@Operation(summary = "获得定时任务日志")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:job:query')")
// @PreAuthorize("@ss.hasPermission('infra:job:query')")
public CommonResult<JobLogRespVO> getJobLog(@RequestParam("id") Long id) {
JobLogDO jobLog = jobLogService.getJobLog(id);
return success(BeanUtils.toBean(jobLog, JobLogRespVO.class));
@ -49,7 +49,7 @@ public class JobLogController {
@GetMapping("/page")
@Operation(summary = "获得定时任务日志分页")
@PreAuthorize("@ss.hasPermission('infra:job:query')")
// @PreAuthorize("@ss.hasPermission('infra:job:query')")
public CommonResult<PageResult<JobLogRespVO>> getJobLogPage(@Valid JobLogPageReqVO pageVO) {
PageResult<JobLogDO> pageResult = jobLogService.getJobLogPage(pageVO);
return success(BeanUtils.toBean(pageResult, JobLogRespVO.class));

@ -38,7 +38,7 @@ public class ApiAccessLogController {
@GetMapping("/page")
@Operation(summary = "获得API 访问日志分页")
@PreAuthorize("@ss.hasPermission('infra:api-access-log:query')")
// @PreAuthorize("@ss.hasPermission('infra:api-access-log:query')")
public CommonResult<PageResult<ApiAccessLogRespVO>> getApiAccessLogPage(@Valid ApiAccessLogPageReqVO pageReqVO) {
PageResult<ApiAccessLogDO> pageResult = apiAccessLogService.getApiAccessLogPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiAccessLogRespVO.class));

@ -52,7 +52,7 @@ public class ApiErrorLogController {
@GetMapping("/page")
@Operation(summary = "获得 API 错误日志分页")
@PreAuthorize("@ss.hasPermission('infra:api-error-log:query')")
// @PreAuthorize("@ss.hasPermission('infra:api-error-log:query')")
public CommonResult<PageResult<ApiErrorLogRespVO>> getApiErrorLogPage(@Valid ApiErrorLogPageReqVO pageReqVO) {
PageResult<ApiErrorLogDO> pageResult = apiErrorLogService.getApiErrorLogPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiErrorLogRespVO.class));

@ -29,6 +29,12 @@
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-mes-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>

@ -66,7 +66,7 @@ public class AlertController {
@GetMapping("/get")
@Operation(summary = "获得告警配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:alert:query')")
// @PreAuthorize("@ss.hasPermission('iot:alert:query')")
public CommonResult<AlertRespVO> getAlert(@RequestParam("id") Long id) {
AlertDO alert = alertService.getAlert(id);
return success(BeanUtils.toBean(alert, AlertRespVO.class));
@ -74,7 +74,7 @@ public class AlertController {
@GetMapping("/page")
@Operation(summary = "获得告警配置分页")
@PreAuthorize("@ss.hasPermission('iot:alert:query')")
// @PreAuthorize("@ss.hasPermission('iot:alert:query')")
public CommonResult<PageResult<AlertRespVO>> getAlertPage(@Valid AlertPageReqVO pageReqVO) {
PageResult<AlertDO> pageResult = alertService.getAlertPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AlertRespVO.class));
@ -98,7 +98,7 @@ public class AlertController {
@GetMapping("/alert-record/page")
@Operation(summary = "获得告警记录分页")
@Parameter(name = "alertId", description = "告警ID")
@PreAuthorize("@ss.hasPermission('iot:alert:query')")
// @PreAuthorize("@ss.hasPermission('iot:alert:query')")
public CommonResult<PageResult<AlertRecordDO>> getAlertRecordPage(PageParam pageReqVO,
@RequestParam("alertId") Long alertId) {
return success(alertService.getAlertRecordPage(pageReqVO, alertId));
@ -131,7 +131,7 @@ public class AlertController {
@GetMapping("/alert-record/get")
@Operation(summary = "获得告警记录")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('iot:alert:query')")
// @PreAuthorize("@ss.hasPermission('iot:alert:query')")
public CommonResult<AlertRecordDO> getAlertRecord(@RequestParam("id") Long id) {
return success(alertService.getAlertRecord(id));
}

@ -65,7 +65,7 @@ public class AlertRecordController {
@GetMapping("/get")
@Operation(summary = "获得告警记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:alert-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:alert-record:query')")
public CommonResult<AlertRecordRespVO> getAlertRecord(@RequestParam("id") Long id) {
AlertRecordDO alertRecord = alertRecordService.getAlertRecord(id);
return success(BeanUtils.toBean(alertRecord, AlertRecordRespVO.class));
@ -73,7 +73,7 @@ public class AlertRecordController {
@GetMapping("/page")
@Operation(summary = "获得告警记录分页")
@PreAuthorize("@ss.hasPermission('iot:alert-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:alert-record:query')")
public CommonResult<PageResult<AlertRecordRespVO>> getAlertRecordPage(@Valid AlertRecordPageReqVO pageReqVO) {
PageResult<AlertRecordDO> pageResult = alertRecordService.getAlertRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AlertRecordRespVO.class));

@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.framework.mqtt.consumer.IMqttservice;
import cn.iocoder.yudao.module.iot.service.device.DeviceService;
import cn.iocoder.yudao.module.iot.service.device.DeviceProductionDailyReportService;
import cn.iocoder.yudao.module.iot.service.device.TDengineService;
import com.fasterxml.jackson.core.JsonProcessingException;
import io.swagger.v3.oas.annotations.Operation;
@ -55,6 +56,8 @@ public class DeviceController {
@Resource
private TDengineService tDengineService;
@Resource
private DeviceProductionDailyReportService deviceProductionDailyReportService;
@Resource
private JobService jobService;
// @Resource
@ -101,7 +104,7 @@ public class DeviceController {
@GetMapping("/get")
@Operation(summary = "获得物联设备")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<DeviceRespVO> getDevice(@RequestParam("id") Long id) {
DeviceRespVO deviceRespVO = deviceService.getDevice(id);
return success(deviceRespVO);
@ -109,7 +112,7 @@ public class DeviceController {
@GetMapping("/page")
@Operation(summary = "获得物联设备分页")
@PreAuthorize("@ss.isInnerProfile() || @ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.isInnerProfile() || @ss.hasPermission('iot:device:query')")
public CommonResult<PageResult<DeviceRespVO>> getDevicePage(@Valid DevicePageReqVO pageReqVO) {
PageResult<DeviceRespVO> pageResult = deviceService.getDevicePage(pageReqVO);
return success(pageResult);
@ -117,14 +120,14 @@ public class DeviceController {
@GetMapping("/available-list")
@Operation(summary = "获取设备下拉列表(全量+是否已选+已删除标识)")
@PreAuthorize("@ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<List<DeviceSelectRespVO>> getAvailableDeviceList() {
return success(deviceService.getDeviceSelectList());
}
@GetMapping("/available-page")
@Operation(summary = "获取设备分页列表(全量+是否已选+已删除标识)")
@PreAuthorize("@ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<PageResult<DeviceSelectRespVO>> getAvailableDevicePage(@Valid DevicePageReqVO pageReqVO) {
PageResult<DeviceSelectRespVO> pageResult = deviceService.getAvailableDevicePage(pageReqVO);
return success(pageResult);
@ -140,6 +143,24 @@ public class DeviceController {
// 导出 Excel
ExcelUtils.write(response, "物联设备.xls", "数据", DeviceRespVO.class,list);
}
@PostMapping("/production-daily-report/generate")
@Operation(summary = "生成设备生产日报 Excel")
@PreAuthorize("@ss.hasPermission('iot:device:export')")
@ApiAccessLog(operateType = EXPORT)
public CommonResult<DeviceProductionDailyReportRespVO> generateProductionDailyReport(
@Valid @RequestBody DeviceProductionDailyReportGenerateReqVO reqVO) {
return success(deviceProductionDailyReportService.generateReport(reqVO));
}
@GetMapping("/production-daily-report/page")
@Operation(summary = "获得设备生产日报 Excel 分页")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<PageResult<DeviceProductionDailyReportRespVO>> getProductionDailyReportPage(
@Valid DeviceProductionDailyReportPageReqVO reqVO) {
return success(deviceProductionDailyReportService.getReportPage(reqVO));
}
@GetMapping("/deviceList")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<List<DeviceDO>> deviceList(@Valid DevicePageReqVO pageReqVO) {
@ -150,7 +171,7 @@ public class DeviceController {
@GetMapping("/noUsedlist")
@Operation(summary = "获得未关联设备台账列表")
@PreAuthorize("@ss.hasPermission('mes:device-ledger:query')")
// @PreAuthorize("@ss.hasPermission('mes:device-ledger:query')")
public CommonResult<List<DeviceRespVO>> getDeviceLedgerListByNoUsed() {
DevicePageReqVO pageReqVO = new DevicePageReqVO();
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
@ -164,7 +185,7 @@ public class DeviceController {
@GetMapping("/noUsedlist2")
@Operation(summary = "获得未关联设备台账列表")
@PreAuthorize("@ss.hasPermission('mes:device-ledger:query')")
// @PreAuthorize("@ss.hasPermission('mes:device-ledger:query')")
public CommonResult<List<DeviceRespVO>> getDeviceLedgerList2ByNoUsed(@RequestParam("id") Long id) {
DevicePageReqVO pageReqVO = new DevicePageReqVO();
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
@ -307,7 +328,7 @@ public class DeviceController {
@GetMapping("/device-attribute/page")
@Operation(summary = "获得设备属性分页")
@Parameter(name = "deviceId", description = "设备id")
@PreAuthorize("@ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<PageResult<DeviceContactModelDO>> getDeviceAttributePage(PageParam pageParam, DeviceContactModelPageReqVO deviceModelAttributePageReqVO) {
return success(deviceService.getDeviceAttributePage(pageParam, deviceModelAttributePageReqVO));
}
@ -315,7 +336,7 @@ public class DeviceController {
@GetMapping("/device-attribute/groupList")
@Operation(summary = "获得设备属性")
@Parameter(name = "deviceId", description = "设备id")
@PreAuthorize("@ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<List<Map<String, Object>>> getDeviceAttributeGroupList(DeviceContactModelPageReqVO deviceModelAttributePageReqVO) {
return success(deviceService.getDeviceAttributeGroupList(deviceModelAttributePageReqVO));
}
@ -324,7 +345,7 @@ public class DeviceController {
@GetMapping("/device-attribute/list")
@Operation(summary = "获得设备属性列表")
@Parameter(name = "deviceId", description = "设备id")
@PreAuthorize("@ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<List<DeviceContactModelDO>> getDeviceAttributeList(@RequestParam(name = "deviceId") Long deviceId) {
return success(deviceService.getDeviceAttributeList(deviceId));
}
@ -365,7 +386,7 @@ public class DeviceController {
@GetMapping("/device-attribute/get")
@Operation(summary = "获得设备属性")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<DeviceAttributeDO> getDeviceAttribute(@RequestParam("id") Long id) {
return success(deviceService.getDeviceAttribute(id));
}
@ -388,7 +409,7 @@ public class DeviceController {
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
})
//@PreAuthorize("@ss.hasPermission('')")
@PreAuthorize("@ss.hasPermission('')")
public CommonResult<String> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport,
@RequestParam("deviceId") Long deviceId) throws Exception {
@ -397,7 +418,7 @@ public class DeviceController {
}
@GetMapping("/devicePointList")
@PreAuthorize("@ss.hasPermission('iot:device:query')")
// @PreAuthorize("@ss.hasPermission('iot:device:query')")
public CommonResult<List<DevicePointRespVO>> devicePointList() {
return success( deviceService.devicePointList());
}

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.iot.controller.admin.device.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@Schema(description = "管理后台 - 设备生产日报生成 Request VO")
@Data
public class DeviceProductionDailyReportGenerateReqVO {
@Schema(description = "设备 ID 列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2]")
@NotEmpty(message = "设备 ID 不能为空")
private List<Long> deviceIds;
@Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2026-07-23")
@NotNull(message = "日期不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate reportDate;
@Schema(description = "班次 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "班次 ID 不能为空")
private Long workTeamId;
}

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.iot.controller.admin.device.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@Schema(description = "管理后台 - 设备生产日报分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class DeviceProductionDailyReportPageReqVO extends PageParam {
@Schema(description = "日期", example = "2026-07-23")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate reportDate;
@Schema(description = "班次 ID", example = "1")
private Long workTeamId;
@Schema(description = "设备 ID按生成时的设备集合筛选", example = "1")
private Long deviceId;
}

@ -0,0 +1,69 @@
package cn.iocoder.yudao.module.iot.controller.admin.device.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 设备生产日报 Response VO")
@Data
public class DeviceProductionDailyReportRespVO {
@Schema(description = "文件名")
private String fileName;
@Schema(description = "文件访问地址")
private String fileUrl;
@Schema(description = "文件路径")
private String filePath;
@Schema(description = "日期")
private LocalDate reportDate;
@Schema(description = "班次 ID")
private Long workTeamId;
@Schema(description = "班次名称")
private String workTeamName;
@Schema(description = "查询开始时间")
private LocalDateTime startTime;
@Schema(description = "查询结束时间")
private LocalDateTime endTime;
@Schema(description = "设备 ID 列表")
private List<Long> deviceIds;
@Schema(description = "设备产能明细")
private List<DeviceCapacityItem> devices;
@Schema(description = "生成时间")
private LocalDateTime createTime;
@Data
public static class DeviceCapacityItem {
@Schema(description = "设备 ID")
private Long deviceId;
@Schema(description = "设备编码")
private String deviceCode;
@Schema(description = "设备名称")
private String deviceName;
@Schema(description = "产能点位编码")
private String capacityCode;
@Schema(description = "产能点位名称")
private String capacityName;
@Schema(description = "开始值")
private Double startValue;
@Schema(description = "结束值")
private Double endValue;
@Schema(description = "差值")
private Double capacityDiff;
@Schema(description = "单位")
private String unit;
}
}

@ -74,7 +74,7 @@ public class DeviceAttributeTypeController {
@GetMapping("/get")
@Operation(summary = "获得采集点分类")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-attribute-type:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-attribute-type:query')")
public CommonResult<DeviceAttributeTypeRespVO> getDeviceAttributeType(@RequestParam("id") Long id) {
DeviceAttributeTypeDO deviceAttributeType = deviceAttributeTypeService.getDeviceAttributeType(id);
return success(BeanUtils.toBean(deviceAttributeType, DeviceAttributeTypeRespVO.class));
@ -82,7 +82,7 @@ public class DeviceAttributeTypeController {
@GetMapping("/page")
@Operation(summary = "获得采集点分类分页")
@PreAuthorize("@ss.hasPermission('iot:device-attribute-type:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-attribute-type:query')")
public CommonResult<PageResult<DeviceAttributeTypeRespVO>> getDeviceAttributeTypePage(@Valid DeviceAttributeTypePageReqVO pageReqVO) {
PageResult<DeviceAttributeTypeDO> pageResult = deviceAttributeTypeService.getDeviceAttributeTypePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DeviceAttributeTypeRespVO.class));

@ -72,7 +72,7 @@ public class DeviceContactModelController {
@GetMapping("/get")
@Operation(summary = "获得采集设备模型-点位管理")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-contact-model:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-contact-model:query')")
public CommonResult<DeviceContactModelRespVO> getDeviceContactModel(@RequestParam("id") Long id) {
DeviceContactModelDO deviceContactModel = deviceContactModelService.getDeviceContactModel(id);
return success(BeanUtils.toBean(deviceContactModel, DeviceContactModelRespVO.class));
@ -80,7 +80,7 @@ public class DeviceContactModelController {
@GetMapping("/page")
@Operation(summary = "获得采集设备模型-点位管理分页")
@PreAuthorize("@ss.hasPermission('iot:device-contact-model:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-contact-model:query')")
public CommonResult<PageResult<DeviceContactModelRespVO>> getDeviceContactModelPage(@Valid DeviceContactModelPageReqVO pageReqVO) {
PageResult<DeviceContactModelDO> pageResult = deviceContactModelService.getDeviceContactModelPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DeviceContactModelRespVO.class));
@ -90,7 +90,7 @@ public class DeviceContactModelController {
@GetMapping("/list")
@Operation(summary = "获得采集设备模型-点位管理 列表")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')")
public CommonResult<List<DeviceContactModelDO>> getDeviceContactModelList(@RequestParam("id") Long id) {
List<DeviceContactModelDO> deviceModelAttribute = deviceContactModelService.getDeviceContactModelList(id);
return success(deviceModelAttribute);

@ -73,7 +73,7 @@ public class DeviceModelController {
@GetMapping("/get")
@Operation(summary = "获得采集设备模型")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-model:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-model:query')")
public CommonResult<DeviceModelRespVO> getDeviceModel(@RequestParam("id") Long id) {
DeviceModelDO deviceModel = deviceModelService.getDeviceModel(id);
return success(BeanUtils.toBean(deviceModel, DeviceModelRespVO.class));
@ -81,7 +81,7 @@ public class DeviceModelController {
@GetMapping("/page")
@Operation(summary = "获得采集设备模型分页")
@PreAuthorize("@ss.hasPermission('iot:device-model:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-model:query')")
public CommonResult<PageResult<DeviceModelRespVO>> getDeviceModelPage(@Valid DeviceModelPageReqVO pageReqVO) {
PageResult<DeviceModelDO> pageResult = deviceModelService.getDeviceModelPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DeviceModelRespVO.class));

@ -77,7 +77,7 @@ public class DeviceModelAttributeController {
@GetMapping("/get")
@Operation(summary = "获得采集设备模型-点位管理")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')")
public CommonResult<DeviceModelAttributeRespVO> getDeviceModelAttribute(@RequestParam("id") Long id) {
DeviceModelAttributeDO deviceModelAttribute = deviceModelAttributeService.getDeviceModelAttribute(id);
return success(BeanUtils.toBean(deviceModelAttribute, DeviceModelAttributeRespVO.class));
@ -86,7 +86,7 @@ public class DeviceModelAttributeController {
@GetMapping("/list")
@Operation(summary = "获得采集设备模型-点位管理 列表")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')")
public CommonResult<List<DeviceModelAttributeDO>> getDeviceModelAttributeList(@RequestParam("id") Long id) {
List<DeviceModelAttributeDO> deviceModelAttribute = deviceModelAttributeService.getDeviceModelAttributeList(id);
return success(deviceModelAttribute);
@ -95,7 +95,7 @@ public class DeviceModelAttributeController {
@GetMapping("/page")
@Operation(summary = "获得采集设备模型-点位管理分页")
@PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-model-attribute:query')")
public CommonResult<PageResult<DeviceModelAttributeRespVO>> getDeviceModelAttributePage(@Valid DeviceModelAttributePageReqVO pageReqVO) {
PageResult<DeviceModelAttributeRespVO> pageResult = deviceModelAttributeService.getDeviceModelAttributePage(pageReqVO);
return success(pageResult);

@ -67,7 +67,7 @@ public class DeviceModelRulesController {
@GetMapping("/get")
@Operation(summary = "获得点位规则关联模型")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-model-rules:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-model-rules:query')")
public CommonResult<DeviceModelRulesRespVO> getDeviceModelRules(@RequestParam("id") Long id) {
DeviceModelRulesDO deviceModelRules = deviceModelRulesService.getDeviceModelRules(id);
DeviceModelRulesRespVO deviceModelRulesRespVO = BeanUtils.toBean(deviceModelRules, DeviceModelRulesRespVO.class);
@ -80,7 +80,7 @@ public class DeviceModelRulesController {
@GetMapping("/page")
@Operation(summary = "获得点位规则关联模型分页")
@PreAuthorize("@ss.hasPermission('iot:device-model-rules:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-model-rules:query')")
public CommonResult<PageResult<DeviceModelRulesRespVO>> getDeviceModelRulesPage(@Valid DeviceModelRulesPageReqVO pageReqVO) {
PageResult<DeviceModelRulesDO> pageResult = deviceModelRulesService.getDeviceModelRulesPage(pageReqVO);
PageResult<DeviceModelRulesRespVO> modelRulesRespVOPageResult = BeanUtils.toBean(pageResult, DeviceModelRulesRespVO.class);

@ -77,7 +77,7 @@ public class DeviceOperationRecordController {
@GetMapping("/get")
@Operation(summary = "获得运行记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-operation-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-operation-record:query')")
public CommonResult<DeviceOperationRecordRespVO> getDeviceOperationRecord(@RequestParam("id") Long id) {
DeviceOperationRecordDO deviceOperationRecord = deviceOperationRecordService.getDeviceOperationRecord(id);
return success(BeanUtils.toBean(deviceOperationRecord, DeviceOperationRecordRespVO.class));
@ -85,7 +85,7 @@ public class DeviceOperationRecordController {
@GetMapping("/page")
@Operation(summary = "获得运行记录分页")
@PreAuthorize("@ss.hasPermission('iot:device-operation-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-operation-record:query')")
public CommonResult<PageResult<DeviceOperationRecordRespVO>> getDeviceOperationRecordPage(@Valid DeviceOperationRecordPageReqVO pageReqVO) {
PageResult<DeviceOperationRecordDO> pageResult = deviceOperationRecordService.getDeviceOperationRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DeviceOperationRecordRespVO.class));
@ -113,7 +113,7 @@ public class DeviceOperationRecordController {
@GetMapping("/deviceOperationPageList")
@Operation(summary = "设备运行报表列表")
@PreAuthorize("@ss.hasPermission('iot:device-operation-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-operation-record:query')")
public CommonResult<List<DeviceTotalTimeRecordRespVO>> deviceOperationPageList(@Valid DeviceTotalTimeRecordReqVO pageReqVO) {
return success(deviceOperationRecordService.deviceOperationPageList(pageReqVO));
}
@ -129,7 +129,7 @@ public class DeviceOperationRecordController {
@GetMapping("/deviceOperationList")
@Operation(summary = "产线设备运行开机率/利用率大屏")
@PreAuthorize("@ss.isInnerProfile() || @ss.hasPermission('iot:device-operation-record:query')")
// @PreAuthorize("@ss.isInnerProfile() || @ss.hasPermission('iot:device-operation-record:query')")
public CommonResult<List<DeviceTotalTimeRecordRespVO>> deviceOperationList(@Valid DeviceTotalTimeRecordReqVO pageReqVO) {
return success(deviceOperationRecordService.deviceOperationList(pageReqVO));
}

@ -68,7 +68,7 @@ public class DevicePointRulesController {
@GetMapping("/get")
@Operation(summary = "获得点位规则")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-point-rules:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-point-rules:query')")
public CommonResult<DevicePointRulesRespVO> getDevicePointRules(@RequestParam("id") Long id) {
DevicePointRulesDO devicePointRules = devicePointRulesService.getDevicePointRules(id);
return success(BeanUtils.toBean(devicePointRules, DevicePointRulesRespVO.class));
@ -76,7 +76,7 @@ public class DevicePointRulesController {
@GetMapping("/page")
@Operation(summary = "获得点位规则分页")
@PreAuthorize("@ss.hasPermission('iot:device-point-rules:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-point-rules:query')")
public CommonResult<PageResult<DevicePointRulesRespVO>> getDevicePointRulesPage(@Valid DevicePointRulesPageReqVO pageReqVO) {
PageResult<DevicePointRulesDO> pageResult = devicePointRulesService.getDevicePointRulesPage(pageReqVO);
PageResult<DevicePointRulesRespVO> rulesRespVOPageResult = BeanUtils.toBean(pageResult, DevicePointRulesRespVO.class);
@ -124,7 +124,7 @@ public class DevicePointRulesController {
@GetMapping("/getList")
@Operation(summary = "获得点位规则列表")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-point-rules:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-point-rules:query')")
public CommonResult<List<DevicePointRulesDO>> getList(@RequestParam("id") Long id) {
List<DevicePointRulesDO> devicePointRules = devicePointRulesService.getList(id);
return success(devicePointRules);

@ -65,7 +65,7 @@ public class DeviceWarinningRecordController {
@GetMapping("/get")
@Operation(summary = "获得告警记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:device-warinning-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-warinning-record:query')")
public CommonResult<DeviceWarinningRecordRespVO> getDeviceWarinningRecord(@RequestParam("id") Long id) {
DeviceWarinningRecordDO deviceWarinningRecord = deviceWarinningRecordService.getDeviceWarinningRecord(id);
return success(BeanUtils.toBean(deviceWarinningRecord, DeviceWarinningRecordRespVO.class));
@ -73,7 +73,7 @@ public class DeviceWarinningRecordController {
@GetMapping("/page")
@Operation(summary = "获得告警记录分页")
@PreAuthorize("@ss.hasPermission('iot:device-warinning-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:device-warinning-record:query')")
public CommonResult<PageResult<DeviceWarinningRecordRespVO>> getDeviceWarinningRecordPage(@Valid DeviceWarinningRecordPageReqVO pageReqVO) {
PageResult<DeviceWarinningRecordDO> pageResult = deviceWarinningRecordService.getDeviceWarinningRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DeviceWarinningRecordRespVO.class));
@ -108,7 +108,7 @@ public class DeviceWarinningRecordController {
@GetMapping("/getLastSevenHoursCount")
@Operation(summary = "获取过去7小时每小时告警数量")
@Parameter(name = "orgId", description = "产线组织Id", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('iot:device-warinning-record:query')")
@PreAuthorize("@ss.hasPermission('iot:device-warinning-record:query')")
public CommonResult<List<Map<String, Object>>> getLastSevenHoursCount( @RequestParam(name = "orgId" ,required = false) Long orgId) {
List<Map<String, Object>> hourCounts = deviceWarinningRecordService.getLastSevenHoursCount();
return success(hourCounts);

@ -65,7 +65,7 @@ public class FeedbackController {
@GetMapping("/get")
@Operation(summary = "获得用户反馈")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:feedback:query')")
// @PreAuthorize("@ss.hasPermission('iot:feedback:query')")
public CommonResult<FeedbackRespVO> getFeedback(@RequestParam("id") Long id) {
FeedbackDO feedback = feedbackService.getFeedback(id);
return success(BeanUtils.toBean(feedback, FeedbackRespVO.class));
@ -73,7 +73,7 @@ public class FeedbackController {
@GetMapping("/page")
@Operation(summary = "获得用户反馈分页")
@PreAuthorize("@ss.hasPermission('iot:feedback:query')")
// @PreAuthorize("@ss.hasPermission('iot:feedback:query')")
public CommonResult<PageResult<FeedbackRespVO>> getFeedbackPage(@Valid FeedbackPageReqVO pageReqVO) {
PageResult<FeedbackDO> pageResult = feedbackService.getFeedbackPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, FeedbackRespVO.class));

@ -64,7 +64,7 @@ public class FormulaController {
@GetMapping("/get")
@Operation(summary = "获得计算公式")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:formula:query')")
// @PreAuthorize("@ss.hasPermission('iot:formula:query')")
public CommonResult<FormulaRespVO> getFormula(@RequestParam("id") Long id) {
FormulaDO formula = formulaService.getFormula(id);
return success(BeanUtils.toBean(formula, FormulaRespVO.class));
@ -72,7 +72,7 @@ public class FormulaController {
@GetMapping("/page")
@Operation(summary = "获得计算公式分页")
@PreAuthorize("@ss.hasPermission('iot:formula:query')")
// @PreAuthorize("@ss.hasPermission('iot:formula:query')")
public CommonResult<PageResult<FormulaRespVO>> getFormulaPage(@Valid FormulaPageReqVO pageReqVO) {
PageResult<FormulaDO> pageResult = formulaService.getFormulaPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, FormulaRespVO.class));
@ -96,7 +96,7 @@ public class FormulaController {
@GetMapping("/formula-detail/page")
@Operation(summary = "获得计算公式明细分页")
@Parameter(name = "formulaId", description = "计算公式ID")
@PreAuthorize("@ss.hasPermission('iot:formula:query')")
// @PreAuthorize("@ss.hasPermission('iot:formula:query')")
public CommonResult<PageResult<FormulaDetailDO>> getFormulaDetailPage(PageParam pageReqVO,
@RequestParam("formulaId") Long formulaId) {
return success(formulaService.getFormulaDetailPage(pageReqVO, formulaId));
@ -129,7 +129,7 @@ public class FormulaController {
@GetMapping("/formula-detail/get")
@Operation(summary = "获得计算公式明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('iot:formula:query')")
// @PreAuthorize("@ss.hasPermission('iot:formula:query')")
public CommonResult<FormulaDetailDO> getFormulaDetail(@RequestParam("id") Long id) {
return success(formulaService.getFormulaDetail(id));
}

@ -63,7 +63,7 @@ public class FormulaRecordController {
@GetMapping("/get")
@Operation(summary = "获得变量记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:formula-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:formula-record:query')")
public CommonResult<FormulaRecordRespVO> getFormulaRecord(@RequestParam("id") Long id) {
FormulaRecordDO formulaRecord = formulaRecordService.getFormulaRecord(id);
return success(BeanUtils.toBean(formulaRecord, FormulaRecordRespVO.class));
@ -71,7 +71,7 @@ public class FormulaRecordController {
@GetMapping("/page")
@Operation(summary = "获得变量记录分页")
@PreAuthorize("@ss.hasPermission('iot:formula-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:formula-record:query')")
public CommonResult<PageResult<FormulaRecordRespVO>> getFormulaRecordPage(@Valid FormulaRecordPageReqVO pageReqVO) {
PageResult<FormulaRecordDO> pageResult = formulaRecordService.getFormulaRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, FormulaRecordRespVO.class));

@ -63,7 +63,7 @@ public class FrpcProxyServerController {
@GetMapping("/get")
@Operation(summary = "获得代理服务")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:frpc-proxy-server:query')")
// @PreAuthorize("@ss.hasPermission('iot:frpc-proxy-server:query')")
public CommonResult<FrpcProxyServerRespVO> getFrpcProxyServer(@RequestParam("id") Long id) {
FrpcProxyServerDO frpcProxyServer = frpcProxyServerService.getFrpcProxyServer(id);
return success(BeanUtils.toBean(frpcProxyServer, FrpcProxyServerRespVO.class));
@ -71,7 +71,7 @@ public class FrpcProxyServerController {
@GetMapping("/page")
@Operation(summary = "获得代理服务分页")
@PreAuthorize("@ss.hasPermission('iot:frpc-proxy-server:query')")
// @PreAuthorize("@ss.hasPermission('iot:frpc-proxy-server:query')")
public CommonResult<PageResult<FrpcProxyServerRespVO>> getFrpcProxyServerPage(@Valid FrpcProxyServerPageReqVO pageReqVO) {
PageResult<FrpcProxyServerDO> pageResult = frpcProxyServerService.getFrpcProxyServerPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, FrpcProxyServerRespVO.class));

@ -63,7 +63,7 @@ public class FrpsServerController {
@GetMapping("/get")
@Operation(summary = "获得代理服务器")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:frpc-proxy-server:query')")
// @PreAuthorize("@ss.hasPermission('iot:frpc-proxy-server:query')")
public CommonResult<FrpsServerRespVO> getFrpsServer(@RequestParam("id") Long id) {
FrpsServerDO frpsServer = frpsServerService.getFrpsServer(id);
return success(BeanUtils.toBean(frpsServer, FrpsServerRespVO.class));
@ -71,7 +71,7 @@ public class FrpsServerController {
@GetMapping("/page")
@Operation(summary = "获得代理服务器分页")
@PreAuthorize("@ss.hasPermission('iot:frpc-proxy-server:query')")
// @PreAuthorize("@ss.hasPermission('iot:frpc-proxy-server:query')")
public CommonResult<PageResult<FrpsServerRespVO>> getFrpsServerPage(@Valid FrpsServerPageReqVO pageReqVO) {
PageResult<FrpsServerDO> pageResult = frpsServerService.getFrpsServerPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, FrpsServerRespVO.class));

@ -105,7 +105,7 @@ public class GatewayController {
@GetMapping("/get")
@Operation(summary = "获得网关")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:gateway:query')")
// @PreAuthorize("@ss.hasPermission('iot:gateway:query')")
public CommonResult<GatewayRespVO> getGateway(@RequestParam("id") Long id) {
GatewayDO gateway = gatewayService.getGateway(id);
return success(BeanUtils.toBean(gateway, GatewayRespVO.class));
@ -113,7 +113,7 @@ public class GatewayController {
@GetMapping("/page")
@Operation(summary = "获得网关分页")
@PreAuthorize("@ss.hasPermission('iot:gateway:query')")
// @PreAuthorize("@ss.hasPermission('iot:gateway:query')")
public CommonResult<PageResult<GatewayRespVO>> getGatewayPage(@Valid GatewayPageReqVO pageReqVO) {
PageResult<GatewayDO> pageResult = gatewayService.getGatewayPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, GatewayRespVO.class));
@ -137,7 +137,7 @@ public class GatewayController {
@GetMapping("/device/page")
@Operation(summary = "获得物联设备分页")
@Parameter(name = "gatewayId", description = "网关id")
@PreAuthorize("@ss.hasPermission('iot:gateway:query')")
// @PreAuthorize("@ss.hasPermission('iot:gateway:query')")
public CommonResult<PageResult<DeviceDO>> getDevicePage(PageParam pageReqVO,
@RequestParam("gatewayId") Long gatewayId) {
return success(gatewayService.getDevicePage(pageReqVO, gatewayId));
@ -170,7 +170,7 @@ public class GatewayController {
@GetMapping("/device/get")
@Operation(summary = "获得物联设备")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('iot:gateway:query')")
// @PreAuthorize("@ss.hasPermission('iot:gateway:query')")
public CommonResult<DeviceDO> getDevice(@RequestParam("id") Long id) {
return success(gatewayService.getDevice(id));
}

@ -61,7 +61,7 @@ public class IotOrganizationController {
@GetMapping("/get")
@Operation(summary = "获得IOT组织")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:organization:query')")
// @PreAuthorize("@ss.hasPermission('iot:organization:query')")
public CommonResult<IotOrganizationRespVO> getOrganization(@RequestParam("id") Long id) {
IotOrganizationDO organization = organizationService.getOrganization(id);
return success(BeanUtils.toBean(organization, IotOrganizationRespVO.class));
@ -69,7 +69,7 @@ public class IotOrganizationController {
@GetMapping("/list")
@Operation(summary = "获得IOT组织列表")
@PreAuthorize("@ss.hasPermission('iot:organization:query')")
// @PreAuthorize("@ss.hasPermission('iot:organization:query')")
public CommonResult<List<IotOrganizationRespVO>> getOrganizationList(@Valid IotOrganizationListReqVO listReqVO) {
List<IotOrganizationDO> list = organizationService.getOrganizationList(listReqVO);
return success(BeanUtils.toBean(list, IotOrganizationRespVO.class));

@ -63,7 +63,7 @@ public class KanbanController {
@GetMapping("/get")
@Operation(summary = "获得物联看板")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:kanban:query')")
// @PreAuthorize("@ss.hasPermission('iot:kanban:query')")
public CommonResult<KanbanRespVO> getKanban(@RequestParam("id") Long id) {
KanbanDO kanban = kanbanService.getKanban(id);
return success(BeanUtils.toBean(kanban, KanbanRespVO.class));
@ -71,7 +71,7 @@ public class KanbanController {
@GetMapping("/page")
@Operation(summary = "获得物联看板分页")
@PreAuthorize("@ss.hasPermission('iot:kanban:query')")
// @PreAuthorize("@ss.hasPermission('iot:kanban:query')")
public CommonResult<PageResult<KanbanRespVO>> getKanbanPage(@Valid KanbanPageReqVO pageReqVO) {
PageResult<KanbanDO> pageResult = kanbanService.getKanbanPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, KanbanRespVO.class));

@ -64,7 +64,7 @@ public class MqttDataRecordController {
@GetMapping("/get")
@Operation(summary = "获得设备数据记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:mqtt-data-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:mqtt-data-record:query')")
public CommonResult<MqttDataRecordRespVO> getMqttDataRecord(@RequestParam("id") Long id) {
MqttDataRecordDO mqttDataRecord = mqttDataRecordService.getMqttDataRecord(id);
return success(BeanUtils.toBean(mqttDataRecord, MqttDataRecordRespVO.class));
@ -72,7 +72,7 @@ public class MqttDataRecordController {
@GetMapping("/page")
@Operation(summary = "获得设备数据记录分页")
@PreAuthorize("@ss.hasPermission('iot:mqtt-data-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:mqtt-data-record:query')")
public CommonResult<PageResult<MqttDataRecordRespVO>> getMqttDataRecordPage(@Valid MqttDataRecordPageReqVO pageReqVO) {
PageResult<MqttDataRecordDO> pageResult = mqttDataRecordService.getMqttDataRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MqttDataRecordRespVO.class));

@ -67,7 +67,7 @@ public class MqttRecordController {
@GetMapping("/get")
@Operation(summary = "获得数采记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:mqtt-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:mqtt-record:query')")
public CommonResult<MqttRecordRespVO> getMqttRecord(@RequestParam("id") Long id) {
MqttRecordDO mqttRecord = mqttRecordService.getMqttRecord(id);
return success(BeanUtils.toBean(mqttRecord, MqttRecordRespVO.class));
@ -88,7 +88,7 @@ public class MqttRecordController {
}
@GetMapping("/page")
@Operation(summary = "获得数采记录分页")
@PreAuthorize("@ss.hasPermission('iot:mqtt-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:mqtt-record:query')")
public CommonResult<PageResult<MqttRecordRespVO>> getMqttRecordPage(@Valid MqttRecordPageReqVO pageReqVO) {
PageResult<MqttRecordDO> pageResult = mqttRecordService.getMqttRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MqttRecordRespVO.class));

@ -65,7 +65,7 @@ public class RecipeController {
@GetMapping("/get")
@Operation(summary = "获得配方管理主")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:recipe:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe:query')")
public CommonResult<RecipeRespVO> getRecipe(@RequestParam("id") Long id) {
RecipeDO recipe = recipeService.getRecipe(id);
return success(BeanUtils.toBean(recipe, RecipeRespVO.class));
@ -80,7 +80,7 @@ public class RecipeController {
// }
@GetMapping("/page")
@Operation(summary = "获得配方管理主分页")
@PreAuthorize("@ss.hasPermission('iot:recipe:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe:query')")
public CommonResult<PageResult<RecipeRespVO>> getRecipePage(@Valid RecipePageReqVO pageReqVO) {
// 直接调用实现类的方法,无类型转换

@ -74,7 +74,7 @@ public class RecipeDeviceAttributeController {
@GetMapping("/get")
@Operation(summary = "获得配方配置(关联采集设备模型-点位管理)")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:recipe-device-attribute:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-device-attribute:query')")
public CommonResult<RecipeDeviceAttributeRespVO> getRecipeDeviceAttribute(@RequestParam("id") Long id) {
RecipeDeviceAttributeDO recipeDeviceAttribute = recipeDeviceAttributeService.getRecipeDeviceAttribute(id);
return success(BeanUtils.toBean(recipeDeviceAttribute, RecipeDeviceAttributeRespVO.class));

@ -118,7 +118,7 @@ public class RecipeDeviceRecordController {
@GetMapping("/get")
@Operation(summary = "获得设备点位采集值记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:recipe-device-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-device-record:query')")
public CommonResult<RecipeDeviceRecordRespVO> getRecipeDeviceRecord(@RequestParam("id") Long id) {
RecipeDeviceRecordDO recipeDeviceRecord = recipeDeviceRecordService.getRecipeDeviceRecord(id);
return success(BeanUtils.toBean(recipeDeviceRecord, RecipeDeviceRecordRespVO.class));
@ -126,7 +126,7 @@ public class RecipeDeviceRecordController {
@GetMapping("/page")
@Operation(summary = "获得设备点位采集值记录分页")
@PreAuthorize("@ss.hasPermission('iot:recipe-device-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-device-record:query')")
public CommonResult<PageResult<RecipeDeviceRecordRespVO>> getRecipeDeviceRecordPage(@Valid RecipeDeviceRecordPageReqVO pageReqVO) {
PageResult<RecipeDeviceRecordDO> pageResult = recipeDeviceRecordService.getRecipeDeviceRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, RecipeDeviceRecordRespVO.class));

@ -66,7 +66,7 @@ public class RecipePlanDetailController {
@GetMapping("/get")
@Operation(summary = "获得配方计划详情表(配方库)")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:recipe-plan-detail:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-plan-detail:query')")
public CommonResult<RecipePlanDetailRespVO> getRecipePlanDetail(@RequestParam("id") Long id) {
RecipePlanDetailDO recipePlanDetail = recipePlanDetailService.getRecipePlanDetail(id);
return success(BeanUtils.toBean(recipePlanDetail, RecipePlanDetailRespVO.class));
@ -92,7 +92,7 @@ public class RecipePlanDetailController {
@GetMapping("/page")
@Operation(summary = "分页查询配方计划详情(含关联信息)")
@PreAuthorize("@ss.hasPermission('iot:recipe-plan-detail:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-plan-detail:query')")
public CommonResult<PageResult<RecipePlanDetailPageRespDTO>> pageRecipePlanDetail(RecipePlanDetailPageReqVO reqVO) {
PageResult<RecipePlanDetailPageRespDTO> pageResult = recipePlanDetailService.pageRecipePlanDetail(reqVO);
return CommonResult.success(pageResult);

@ -67,7 +67,7 @@ public class RecipePointController {
@GetMapping("/get")
@Operation(summary = "获得手动配置参数表(绑定配方)")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:recipe-point:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-point:query')")
public CommonResult<RecipePointRespVO> getRecipePoint(@RequestParam("id") Long id) {
RecipePointDO recipePoint = recipePointService.getRecipePoint(id);
return success(BeanUtils.toBean(recipePoint, RecipePointRespVO.class));
@ -75,7 +75,7 @@ public class RecipePointController {
@GetMapping("/page")
@Operation(summary = "获得手动配置参数表(绑定配方)分页")
@PreAuthorize("@ss.hasPermission('iot:recipe-point:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-point:query')")
public CommonResult<PageResult<RecipePointRespVO>> getRecipePointPage(@Valid RecipePointPageReqVO pageReqVO) {
PageResult<RecipePointDO> pageResult = recipePointService.getRecipePointPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, RecipePointRespVO.class));
@ -97,7 +97,7 @@ public class RecipePointController {
@GetMapping("/list")
@Operation(summary = "获得手动配置参数表(绑定配方)分页")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:recipe-point:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-point:query')")
public CommonResult<List<RecipePointRespVO>> getRecipePointList(@RequestParam("id") Long recipeId) {
List<RecipePointDO> list = recipePointService.getRecipePointPageList(recipeId);

@ -65,7 +65,7 @@ public class RecipePointRecordController {
@GetMapping("/get")
@Operation(summary = "获得IoT配方点位记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:recipe-point-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-point-record:query')")
public CommonResult<RecipePointRecordRespVO> getRecipePointRecord(@RequestParam("id") Long id) {
RecipePointRecordDO recipePointRecord = recipePointRecordService.getRecipePointRecord(id);
return success(BeanUtils.toBean(recipePointRecord, RecipePointRecordRespVO.class));
@ -73,7 +73,7 @@ public class RecipePointRecordController {
@GetMapping("/page")
@Operation(summary = "获得IoT配方点位记录分页")
@PreAuthorize("@ss.hasPermission('iot:recipe-point-record:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-point-record:query')")
public CommonResult<PageResult<RecipePointRecordRespVO>> getRecipePointRecordPage(@Valid RecipePointRecordPageReqVO pageReqVO) {
PageResult<RecipePointRecordDO> pageResult = recipePointRecordService.getRecipePointRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, RecipePointRecordRespVO.class));

@ -65,7 +65,7 @@ public class RecipeTypeController {
@GetMapping("/get")
@Operation(summary = "获得配方类型表(基础字典)")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('iot:recipe-type:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-type:query')")
public CommonResult<RecipeTypeRespVO> getRecipeType(@RequestParam("id") Long id) {
RecipeTypeDO recipeType = recipeTypeService.getRecipeType(id);
return success(BeanUtils.toBean(recipeType, RecipeTypeRespVO.class));
@ -73,7 +73,7 @@ public class RecipeTypeController {
@GetMapping("/page")
@Operation(summary = "获得配方类型表(基础字典)分页")
@PreAuthorize("@ss.hasPermission('iot:recipe-type:query')")
// @PreAuthorize("@ss.hasPermission('iot:recipe-type:query')")
public CommonResult<PageResult<RecipeTypeRespVO>> getRecipeTypePage(@Valid RecipeTypePageReqVO pageReqVO) {
PageResult<RecipeTypeDO> pageResult = recipeTypeService.getRecipeTypePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, RecipeTypeRespVO.class));

@ -87,7 +87,7 @@ public class DefaultEmqConfig {
* @return
* @throws Exception
*/
@Bean
@Bean(destroyMethod = "")
public MqttClient mqttClient(MqttConnectOptions options, DefaultEmqProperties emqProperties, DefaultBizTopicSet defaultBizTopicSet, ApplicationContext applicationContext) throws Exception {
MqttClient mqttClient = new MqttClient(emqProperties.getBroker(), emqProperties.getClientId(), new MemoryPersistence());
mqttClient.setCallback(new MqttCallbackImpl(defaultBizTopicSet.getTopicMap(), mqttClient, options));

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.iot.framework.mqtt.config;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
@Slf4j
@Component
public class MqttClientShutdown {
@Resource
private MqttClient mqttClient;
@PreDestroy
public void shutdown() {
try {
if (mqttClient.isConnected()) {
mqttClient.disconnectForcibly(1000, 1000);
}
mqttClient.close();
log.info("MQTT客户端已关闭");
} catch (Exception e) {
log.warn("MQTT客户端关闭失败: {}", e.getMessage());
}
}
}

@ -0,0 +1,164 @@
package cn.iocoder.yudao.module.iot.framework.mqtt.consumer;
import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.PointRulesRespVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRulesDO;
import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.devicepointrules.DevicePointRulesMapper;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
@Slf4j
@Component
public class IotMqttRuntimeCache {
@Resource
@Lazy
private DeviceMapper deviceMapper;
@Resource
private DeviceContactModelMapper deviceContactModelMapper;
@Resource
private DevicePointRulesMapper devicePointRulesMapper;
private final ConcurrentMap<String, Optional<DeviceDO>> deviceByTopic = new ConcurrentHashMap<>();
private final ConcurrentMap<Long, List<DeviceContactModelDO>> pointsByDeviceId = new ConcurrentHashMap<>();
private final ConcurrentMap<Long, Map<String, List<CachedPointRule>>> pointRulesByDeviceId = new ConcurrentHashMap<>();
private final ConcurrentMap<Long, Optional<DevicePointRulesDO>> countRuleByDeviceId = new ConcurrentHashMap<>();
public DeviceDO getDeviceByTopic(String topic) {
if (StringUtils.isBlank(topic)) {
return null;
}
return deviceByTopic.computeIfAbsent(topic, this::loadDeviceByTopic).orElse(null);
}
public List<DeviceContactModelDO> getDevicePoints(Long deviceId) {
if (deviceId == null) {
return Collections.emptyList();
}
return pointsByDeviceId.computeIfAbsent(deviceId, this::loadDevicePoints);
}
public List<CachedPointRule> getPointRules(Long deviceId, String attributeCode) {
if (deviceId == null || StringUtils.isBlank(attributeCode)) {
return Collections.emptyList();
}
return pointRulesByDeviceId.computeIfAbsent(deviceId, this::loadPointRulesByAttributeCode)
.getOrDefault(attributeCode, Collections.emptyList());
}
public DevicePointRulesDO getLatestCountRule(Long deviceId) {
if (deviceId == null) {
return null;
}
return countRuleByDeviceId.computeIfAbsent(deviceId, this::loadLatestCountRule).orElse(null);
}
public void refreshDevice(Long deviceId) {
if (deviceId == null) {
return;
}
pointsByDeviceId.remove(deviceId);
pointRulesByDeviceId.remove(deviceId);
countRuleByDeviceId.remove(deviceId);
deviceByTopic.entrySet().removeIf(entry -> entry.getValue().map(device -> deviceId.equals(device.getId())).orElse(false));
}
public void refreshTopic(String topic) {
if (StringUtils.isNotBlank(topic)) {
deviceByTopic.remove(topic);
}
}
public void clearAll() {
deviceByTopic.clear();
pointsByDeviceId.clear();
pointRulesByDeviceId.clear();
countRuleByDeviceId.clear();
}
private Optional<DeviceDO> loadDeviceByTopic(String topic) {
return Optional.ofNullable(deviceMapper.selectOne(Wrappers.<DeviceDO>lambdaQuery()
.eq(DeviceDO::getTopic, topic)
.last("LIMIT 1")));
}
private List<DeviceContactModelDO> loadDevicePoints(Long deviceId) {
List<DeviceContactModelDO> points = deviceContactModelMapper.selectList(Wrappers.<DeviceContactModelDO>lambdaQuery()
.eq(DeviceContactModelDO::getDeviceId, deviceId));
if (CollectionUtils.isEmpty(points)) {
return Collections.emptyList();
}
return Collections.unmodifiableList(new ArrayList<>(points));
}
private Map<String, List<CachedPointRule>> loadPointRulesByAttributeCode(Long deviceId) {
List<DevicePointRulesDO> rules = devicePointRulesMapper.selectList(Wrappers.<DevicePointRulesDO>lambdaQuery()
.eq(DevicePointRulesDO::getDeviceId, deviceId)
.orderByDesc(DevicePointRulesDO::getCreateTime));
if (CollectionUtils.isEmpty(rules)) {
return Collections.emptyMap();
}
List<CachedPointRule> parsedRules = new ArrayList<>();
for (DevicePointRulesDO rule : rules) {
if (StringUtils.isBlank(rule.getFieldRule())) {
continue;
}
try {
List<PointRulesRespVO> pointRules = JSON.parseArray(rule.getFieldRule(), PointRulesRespVO.class);
if (CollectionUtils.isEmpty(pointRules)) {
continue;
}
for (PointRulesRespVO pointRule : pointRules) {
if (StringUtils.isBlank(pointRule.getCode())) {
continue;
}
parsedRules.add(new CachedPointRule(rule, pointRule));
}
} catch (Exception e) {
log.warn("MQTT规则解析失败 deviceId={}, ruleId={}, reason={}", deviceId, rule.getId(), e.getMessage());
}
}
if (parsedRules.isEmpty()) {
return Collections.emptyMap();
}
return parsedRules.stream().collect(Collectors.groupingBy(rule -> rule.getPointRule().getCode()));
}
private Optional<DevicePointRulesDO> loadLatestCountRule(Long deviceId) {
return Optional.ofNullable(devicePointRulesMapper.selectOne(Wrappers.<DevicePointRulesDO>lambdaQuery()
.eq(DevicePointRulesDO::getDeviceId, deviceId)
.eq(DevicePointRulesDO::getIdentifier, "COUNT")
.orderByDesc(DevicePointRulesDO::getUpdateTime)
.last("LIMIT 1")));
}
@Getter
@AllArgsConstructor
public static class CachedPointRule {
private final DevicePointRulesDO rule;
private final PointRulesRespVO pointRule;
}
}

@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.module.iot.controller.admin.device.enums.DeviceBasicStatusEnum;
import cn.iocoder.yudao.module.iot.controller.admin.device.enums.DeviceStatusEnum;
import cn.iocoder.yudao.module.iot.controller.admin.devicemodelrules.vo.PointRulesRespVO;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.deviceoperationrecord.DeviceOperationRecordDO;
@ -12,14 +13,12 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRu
import cn.iocoder.yudao.module.iot.dal.dataobject.devicewarinningrecord.DeviceWarinningRecordDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.iotorganization.IotOrganizationDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO;
import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.deviceoperationrecord.DeviceOperationRecordMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.devicepointrules.DevicePointRulesMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.devicewarinningrecord.DeviceWarinningRecordMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.mqttrecord.MqttRecordMapper;
import cn.iocoder.yudao.module.iot.framework.constant.Constants;
import cn.iocoder.yudao.module.iot.framework.mqtt.common.SuperConsumer;
import cn.iocoder.yudao.module.iot.framework.mqtt.consumer.IotMqttRuntimeCache.CachedPointRule;
import cn.iocoder.yudao.module.iot.framework.mqtt.consumer.impl.AsyncService;
import cn.iocoder.yudao.module.iot.framework.mqtt.entity.MqttData;
import cn.iocoder.yudao.module.iot.framework.mqtt.utils.DateUtils;
@ -32,16 +31,13 @@ import cn.iocoder.yudao.module.iot.service.mqttrecord.MqttRecordService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -58,9 +54,6 @@ public class MqttDataHandler extends SuperConsumer<String> {
@Resource
private IotOrganizationService organizationService;
@Resource
@Lazy
private DeviceMapper deviceMapper;
@Resource
private AsyncService asyncService;
@Resource
@ -71,17 +64,14 @@ public class MqttDataHandler extends SuperConsumer<String> {
@Resource
private DeviceOperationRecordMapper deviceOperationRecordMapper;
@Resource
private DeviceContactModelMapper deviceContactModelMapper;
@Resource
private TDengineService tDengineService;
@Resource
private DevicePointRulesMapper devicePointRulesMapper;
private DeviceWarinningRecordMapper deviceWarinningRecordMapper;
@Resource
private DeviceWarinningRecordMapper deviceWarinningRecordMapper;
private IotMqttRuntimeCache mqttRuntimeCache;
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
@ -187,10 +177,10 @@ public class MqttDataHandler extends SuperConsumer<String> {
Map.class
);
DeviceDO deviceDO = deviceMapper.selectOne(Wrappers.<DeviceDO>lambdaQuery().eq(DeviceDO::getTopic,topic));
log.info("getDeviceByMqttTopic参数{}", topic);
DeviceDO deviceDO = mqttRuntimeCache.getDeviceByTopic(topic);
log.debug("getDeviceByMqttTopic参数{}", topic);
if (deviceDO == null) {
log.info("getDeviceByMqttTopic查询出来deviceDO为空");
log.debug("getDeviceByMqttTopic查询出来deviceDO为空");
return;
}
@ -214,7 +204,7 @@ public class MqttDataHandler extends SuperConsumer<String> {
Long deviceId = device.getId();
// 1. 查询点位配置
List<DeviceContactModelDO> points = getDevicePoints(deviceId);
List<DeviceContactModelDO> points = mqttRuntimeCache.getDevicePoints(deviceId);
if (CollectionUtils.isEmpty(points)) {
@ -258,7 +248,7 @@ public class MqttDataHandler extends SuperConsumer<String> {
log.info("设备 {} MQTT 数据点位数量 {}", deviceId, varListMap.size());
log.debug("设备 {} MQTT 数据点位数量 {}", deviceId, varListMap.size());
int successCount = 0;
@ -272,9 +262,10 @@ public class MqttDataHandler extends SuperConsumer<String> {
String code = point.getAttributeCode();
Object value = varListMap.get(code);
DeviceContactModelDO pointData = BeanUtils.toBean(point, DeviceContactModelDO.class);
if (value == null) {
validDataList.add(point);
validDataList.add(pointData);
continue;
}
@ -285,14 +276,14 @@ public class MqttDataHandler extends SuperConsumer<String> {
processedValue,
code,
device,
point.getId()
pointData
);
point.setAddressValue(processedValue);
pointData.setAddressValue(processedValue);
successCount++;
validDataList.add(point);
validDataList.add(pointData);
} catch (Exception e) {
@ -320,13 +311,7 @@ public class MqttDataHandler extends SuperConsumer<String> {
// handleCapacityFormula
private void handleCapacityFormula(DeviceDO device, Map<String, Object> varListMap) {
DevicePointRulesDO formulaRule = devicePointRulesMapper.selectOne(
Wrappers.<DevicePointRulesDO>lambdaQuery()
.eq(DevicePointRulesDO::getDeviceId, device.getId())
.eq(DevicePointRulesDO::getIdentifier, "COUNT")
.orderByDesc(DevicePointRulesDO::getUpdateTime)
.last("limit 1")
);
DevicePointRulesDO formulaRule = mqttRuntimeCache.getLatestCountRule(device.getId());
if (formulaRule == null || StringUtils.isBlank(formulaRule.getFieldRule())) {
return;
}
@ -354,46 +339,6 @@ public class MqttDataHandler extends SuperConsumer<String> {
private DevicePointRulesDO getDevicePointRules(Long deviceId) {
List<DevicePointRulesDO> list =
devicePointRulesMapper.selectList(
Wrappers.<DevicePointRulesDO>lambdaQuery()
.eq(DevicePointRulesDO::getDeviceId, deviceId)
.eq(DevicePointRulesDO::getIdentifier, "RUNNING")
.orderByDesc(DevicePointRulesDO::getCreateTime)
.last("LIMIT 1")
);
if (CollectionUtils.isEmpty(list)) {
log.info("设备 {} 未找到 RUNNING 规则", deviceId);
return null;
}
DevicePointRulesDO rule = list.get(0);
log.info("设备 {} 使用 RUNNING 规则规则ID={}, 创建时间={}",
deviceId,
rule.getId(),
rule.getCreateTime());
return rule;
}
/**
*
*/
private List<DeviceContactModelDO> getDevicePoints(Long deviceId) {
LambdaQueryWrapper<DeviceContactModelDO> query = new LambdaQueryWrapper<>();
query.eq(DeviceContactModelDO::getDeviceId, deviceId);
return deviceContactModelMapper.selectList(query);
}
/**
* OPC
*/
@ -423,7 +368,7 @@ public class MqttDataHandler extends SuperConsumer<String> {
boolean isSuccess = tDengineService.newInsertDeviceData(deviceId, dataList);
if (isSuccess) {
log.info("设备 {} 数据入库成功,总数: {},有效: {}",
log.debug("设备 {} 数据入库成功,总数: {},有效: {}",
deviceId, dataList.size(), successCount);
} else {
log.error("设备 {} 数据入库失败", deviceId);
@ -433,60 +378,31 @@ public class MqttDataHandler extends SuperConsumer<String> {
}
}
private void judgmentRules(String processedValue, String attributeCode, DeviceDO device, Long modelId) {
private void judgmentRules(String processedValue, String attributeCode, DeviceDO device, DeviceContactModelDO point) {
if (StringUtils.isBlank(processedValue)) {
log.warn("待判断的值为空编码attributeCode: {}, deviceId: {}", attributeCode, device.getId());
// return;
}
// 1. 查询设备规则
List<DevicePointRulesDO> devicePointRulesDOList = devicePointRulesMapper.selectList(
Wrappers.<DevicePointRulesDO>lambdaQuery()
.eq(DevicePointRulesDO::getDeviceId, device.getId()).orderByDesc(DevicePointRulesDO::getCreateTime));
if (CollectionUtils.isEmpty(devicePointRulesDOList)) {
List<CachedPointRule> cachedRules = mqttRuntimeCache.getPointRules(device.getId(), attributeCode);
if (CollectionUtils.isEmpty(cachedRules)) {
log.debug("设备 {} 未配置规则", device.getId());
return;
}
// 2. 遍历规则
for (DevicePointRulesDO devicePointRulesDO : devicePointRulesDOList) {
if (StringUtils.isBlank(devicePointRulesDO.getFieldRule())) {
continue;
}
// 3. 解析规则列表
List<PointRulesRespVO> pointRulesVOList = JSON.parseArray(
devicePointRulesDO.getFieldRule(), PointRulesRespVO.class);
if (CollectionUtils.isEmpty(pointRulesVOList)) {
continue;
}
// 4. 找到对应modelId的规则并进行判断
for (PointRulesRespVO pointRulesRespVO : pointRulesVOList) {
if (pointRulesRespVO.getCode() != null &&
pointRulesRespVO.getCode().equals(attributeCode)) {
boolean matched = matchRule(processedValue, pointRulesRespVO);
if (matched) {
log.info("规则匹配成功: modelId={}, value={}, rule={}",
attributeCode, processedValue,
JSON.toJSONString(pointRulesRespVO));
// 执行匹配成功后的逻辑
handleMatchedSuccessRule(devicePointRulesDO, pointRulesRespVO, processedValue, device, attributeCode, modelId);
break;
} else {
log.debug("规则不匹配: modelId={}, value={}, rule={}",
attributeCode, processedValue,
JSON.toJSONString(pointRulesRespVO));
// 执行匹配失败后的逻辑
// handleMatchedFailureRule(devicePointRulesDO, pointRulesRespVO, processedValue, device, attributeCode);
}
}
for (CachedPointRule cachedRule : cachedRules) {
PointRulesRespVO pointRulesRespVO = cachedRule.getPointRule();
boolean matched = matchRule(processedValue, pointRulesRespVO);
if (matched) {
log.debug("规则匹配成功: modelId={}, value={}, rule={}",
attributeCode, processedValue,
JSON.toJSONString(pointRulesRespVO));
handleMatchedSuccessRule(cachedRule.getRule(), pointRulesRespVO, processedValue, device, attributeCode, point);
break;
} else {
log.debug("规则不匹配: modelId={}, value={}, rule={}",
attributeCode, processedValue,
JSON.toJSONString(pointRulesRespVO));
}
}
}
@ -512,9 +428,8 @@ public class MqttDataHandler extends SuperConsumer<String> {
String processedValue,
DeviceDO device,
String attributeCode,
Long modelId) {
DeviceContactModelDO deviceContactModelDO = deviceContactModelMapper.selectById(modelId);
if (deviceContactModelDO == null) {
DeviceContactModelDO point) {
if (point == null) {
return;
}
@ -541,13 +456,13 @@ public class MqttDataHandler extends SuperConsumer<String> {
DeviceWarinningRecordDO deviceWarinningRecordDO = new DeviceWarinningRecordDO();
deviceWarinningRecordDO.setDeviceId(device.getId());
deviceWarinningRecordDO.setModelId(modelId);
deviceWarinningRecordDO.setModelId(point.getId());
deviceWarinningRecordDO.setRule(pointRulesRespVO.getRule());
deviceWarinningRecordDO.setAlarmLevel(devicePointRulesDO.getAlarmLevel());
deviceWarinningRecordDO.setAddressValue(processedValue);
deviceWarinningRecordDO.setRuleId(devicePointRulesDO.getId());
deviceWarinningRecordDO.setDeviceName(device.getDeviceName());
deviceWarinningRecordDO.setModelName(deviceContactModelDO.getAttributeName());
deviceWarinningRecordDO.setModelName(point.getAttributeName());
deviceWarinningRecordDO.setRuleName(devicePointRulesDO.getFieldName());
//TODO 创建人和更新人为内置默认管理员
deviceWarinningRecordDO.setCreator("1");

@ -1,7 +1,9 @@
package cn.iocoder.yudao.module.iot.framework.mqtt.utils;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @author jie
@ -10,5 +12,12 @@ public class ThreadUtils {
/**
* 线
*/
public static ExecutorService executorService = Executors.newFixedThreadPool(50);
public static ExecutorService executorService = new ThreadPoolExecutor(
4,
8,
60L,
TimeUnit.SECONDS,
new LinkedBlockingQueue<>(2000),
new ThreadPoolExecutor.CallerRunsPolicy()
);
}

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.iot.service.device;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceProductionDailyReportGenerateReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceProductionDailyReportPageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceProductionDailyReportRespVO;
public interface DeviceProductionDailyReportService {
DeviceProductionDailyReportRespVO generateReport(DeviceProductionDailyReportGenerateReqVO reqVO);
PageResult<DeviceProductionDailyReportRespVO> getReportPage(DeviceProductionDailyReportPageReqVO reqVO);
}

@ -0,0 +1,365 @@
package cn.iocoder.yudao.module.iot.service.device;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
import cn.iocoder.yudao.module.infra.dal.mysql.file.FileMapper;
import cn.iocoder.yudao.module.infra.service.file.FileService;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceProductionDailyReportGenerateReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceProductionDailyReportPageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceProductionDailyReportRespVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper;
import cn.iocoder.yudao.module.mes.api.workteam.WorkTeamApi;
import cn.iocoder.yudao.module.mes.api.workteam.dto.WorkTeamRespDTO;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_NOT_EXISTS;
@Service
@Validated
@Slf4j
public class DeviceProductionDailyReportServiceImpl implements DeviceProductionDailyReportService {
private static final String TEMPLATE_PATH = "excel/templates/fully-automatic-molding-production-daily-report-template.xlsx";
private static final String REPORT_PATH_PREFIX = "iot/device/production-daily-report";
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Resource
private DeviceMapper deviceMapper;
@Resource
private DeviceContactModelMapper deviceContactModelMapper;
@Resource
private TDengineService tDengineService;
@Resource
private WorkTeamApi workTeamApi;
@Resource
private FileService fileService;
@Resource
private FileMapper fileMapper;
@Override
public DeviceProductionDailyReportRespVO generateReport(DeviceProductionDailyReportGenerateReqVO reqVO) {
List<Long> deviceIds = reqVO.getDeviceIds().stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(deviceIds)) {
throw exception(DEVICE_NOT_EXISTS);
}
Map<Long, DeviceDO> deviceMap = deviceMapper.selectBatchIds(deviceIds).stream()
.collect(Collectors.toMap(DeviceDO::getId, item -> item));
if (deviceMap.size() != deviceIds.size()) {
throw exception(DEVICE_NOT_EXISTS);
}
WorkTeamRespDTO workTeam = workTeamApi.getWorkTeam(reqVO.getWorkTeamId());
if (workTeam == null || workTeam.getStartTime() == null || workTeam.getEndTime() == null) {
throw new IllegalArgumentException("Work team does not exist or start/end time is not configured");
}
LocalDateTime startTime = combineShiftTime(reqVO.getReportDate(), workTeam.getStartTime());
LocalDateTime endTime = combineShiftTime(reqVO.getReportDate(), workTeam.getEndTime());
if (!endTime.isAfter(startTime)) {
endTime = endTime.plusDays(1);
}
List<DeviceProductionDailyReportRespVO.DeviceCapacityItem> items = buildCapacityItems(deviceIds, deviceMap, startTime, endTime);
byte[] excelContent = buildExcel(reqVO, workTeam, startTime, endTime, items);
String fileName = String.format("全自动成型机生产日报表_%s_%s_%s.xlsx",
reqVO.getReportDate().format(DateTimeFormatter.BASIC_ISO_DATE), reqVO.getWorkTeamId(), System.currentTimeMillis());
String filePath = String.format("%s/date=%s/workTeamId=%s/deviceIds=%s/deviceTags=%s/%s",
REPORT_PATH_PREFIX, reqVO.getReportDate(), reqVO.getWorkTeamId(), joinDeviceIds(deviceIds), buildDeviceTags(deviceIds), fileName);
Map<String, String> file = fileService.createFile(fileName, filePath, excelContent);
DeviceProductionDailyReportRespVO respVO = buildBaseResp(reqVO.getReportDate(), workTeam, startTime, endTime, deviceIds);
respVO.setFileName(file.get("fileName"));
respVO.setFileUrl(file.get("fileUrl"));
respVO.setFilePath(filePath);
respVO.setDevices(items);
respVO.setCreateTime(LocalDateTime.now());
return respVO;
}
@Override
public PageResult<DeviceProductionDailyReportRespVO> getReportPage(DeviceProductionDailyReportPageReqVO reqVO) {
LambdaQueryWrapperX<FileDO> queryWrapper = new LambdaQueryWrapperX<>();
queryWrapper.like(FileDO::getPath, REPORT_PATH_PREFIX);
queryWrapper.orderByDesc(FileDO::getId);
if (reqVO.getReportDate() != null) {
queryWrapper.like(FileDO::getPath, "/date=" + reqVO.getReportDate() + "/");
}
if (reqVO.getWorkTeamId() != null) {
queryWrapper.like(FileDO::getPath, "/workTeamId=" + reqVO.getWorkTeamId() + "/");
}
if (reqVO.getDeviceId() != null) {
queryWrapper.like(FileDO::getPath, buildDeviceTag(reqVO.getDeviceId()));
}
PageResult<FileDO> pageResult = fileMapper.selectPage(reqVO, queryWrapper);
List<DeviceProductionDailyReportRespVO> list = pageResult.getList().stream()
.map(this::convertFileToReport)
.collect(Collectors.toList());
return new PageResult<>(list, pageResult.getTotal());
}
private List<DeviceProductionDailyReportRespVO.DeviceCapacityItem> buildCapacityItems(List<Long> deviceIds,
Map<Long, DeviceDO> deviceMap,
LocalDateTime startTime,
LocalDateTime endTime) {
Map<Long, List<DeviceContactModelDO>> capacityPointMap = queryCapacityPoints(deviceIds);
Map<Long, Map<String, Object>> firstRows = tDengineService.queryDevicesEarliestRow(deviceIds,
startTime.format(DATE_TIME_FORMATTER), endTime.format(DATE_TIME_FORMATTER));
Map<Long, Map<String, Object>> lastRows = tDengineService.queryDevicesLatestRow(deviceIds,
startTime.format(DATE_TIME_FORMATTER), endTime.format(DATE_TIME_FORMATTER));
List<DeviceProductionDailyReportRespVO.DeviceCapacityItem> items = new ArrayList<>();
for (Long deviceId : deviceIds) {
DeviceDO device = deviceMap.get(deviceId);
List<DeviceContactModelDO> points = capacityPointMap.getOrDefault(deviceId, Collections.emptyList());
if (CollUtil.isEmpty(points)) {
items.add(buildEmptyCapacityItem(device));
continue;
}
Map<String, Object> firstRow = firstRows.get(deviceId);
Map<String, Object> lastRow = lastRows.get(deviceId);
for (DeviceContactModelDO point : points) {
items.add(buildCapacityItem(device, point, firstRow, lastRow));
}
}
return items;
}
private Map<Long, List<DeviceContactModelDO>> queryCapacityPoints(List<Long> deviceIds) {
List<DeviceContactModelDO> points = deviceContactModelMapper.selectList(
Wrappers.<DeviceContactModelDO>lambdaQuery()
.in(DeviceContactModelDO::getDeviceId, deviceIds)
.and(wrapper -> wrapper.like(DeviceContactModelDO::getTypeName, "产能")
.or().like(DeviceContactModelDO::getAttributeType, "产能")
.or().like(DeviceContactModelDO::getAttributeName, "产能"))
.orderByAsc(DeviceContactModelDO::getDeviceId)
.orderByAsc(DeviceContactModelDO::getSort)
.orderByAsc(DeviceContactModelDO::getId));
return points.stream().collect(Collectors.groupingBy(DeviceContactModelDO::getDeviceId, LinkedHashMap::new, Collectors.toList()));
}
private DeviceProductionDailyReportRespVO.DeviceCapacityItem buildEmptyCapacityItem(DeviceDO device) {
DeviceProductionDailyReportRespVO.DeviceCapacityItem item = new DeviceProductionDailyReportRespVO.DeviceCapacityItem();
item.setDeviceId(device.getId());
item.setDeviceCode(device.getDeviceCode());
item.setDeviceName(device.getDeviceName());
item.setCapacityDiff(0D);
return item;
}
private DeviceProductionDailyReportRespVO.DeviceCapacityItem buildCapacityItem(DeviceDO device, DeviceContactModelDO point,
Map<String, Object> firstRow, Map<String, Object> lastRow) {
DeviceProductionDailyReportRespVO.DeviceCapacityItem item = new DeviceProductionDailyReportRespVO.DeviceCapacityItem();
item.setDeviceId(device.getId());
item.setDeviceCode(device.getDeviceCode());
item.setDeviceName(device.getDeviceName());
item.setCapacityCode(point.getAttributeCode());
item.setCapacityName(point.getAttributeName());
item.setUnit(point.getDataUnit());
Double firstValue = getNumberValue(firstRow, point.getAttributeCode());
Double lastValue = getNumberValue(lastRow, point.getAttributeCode());
item.setStartValue(firstValue);
item.setEndValue(lastValue);
if (firstValue != null && lastValue != null) {
item.setCapacityDiff(BigDecimal.valueOf(lastValue).subtract(BigDecimal.valueOf(firstValue))
.setScale(3, RoundingMode.HALF_UP).doubleValue());
} else {
item.setCapacityDiff(0D);
}
return item;
}
@SneakyThrows
private byte[] buildExcel(DeviceProductionDailyReportGenerateReqVO reqVO, WorkTeamRespDTO workTeam,
LocalDateTime startTime, LocalDateTime endTime,
List<DeviceProductionDailyReportRespVO.DeviceCapacityItem> items) {
try (InputStream inputStream = new ClassPathResource(TEMPLATE_PATH).getInputStream();
Workbook workbook = WorkbookFactory.create(inputStream);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
Sheet sheet = workbook.getSheetAt(0);
setCellValue(sheet, 2, 0, "日期:" + LocalDate.now().format(DATE_FORMATTER));
setCellValue(sheet, 2, 4, "班次:" + StrUtil.blankToDefault(workTeam.getTeamName(), ""));
setCellValue(sheet, 19, 9, "审核:");
int rowIndex = 5;
for (int index = 0; index < items.size(); index++) {
if (rowIndex + index > 9) {
sheet.shiftRows(10, sheet.getLastRowNum(), 1, true, false);
}
Row row = sheet.getRow(rowIndex + index);
if (row == null) {
row = sheet.createRow(rowIndex + index);
}
DeviceProductionDailyReportRespVO.DeviceCapacityItem item = items.get(index);
setCellValue(row, 0, index + 1);
setCellValue(row, 1, StrUtil.blankToDefault(item.getDeviceCode(), item.getDeviceName()));
setCellValue(row, 4, item.getCapacityName());
setCellValue(row, 20, item.getCapacityDiff());
setCellValue(row, 21, toHour(startTime, endTime));
setCellValue(row, 22, startTime.toLocalTime() + "-" + endTime.toLocalTime());
setCellValue(row, 24, workTeam.getTeamName());
}
workbook.write(outputStream);
return outputStream.toByteArray();
}
}
private DeviceProductionDailyReportRespVO convertFileToReport(FileDO file) {
DeviceProductionDailyReportRespVO respVO = new DeviceProductionDailyReportRespVO();
respVO.setFileName(file.getName());
respVO.setFileUrl(file.getUrl());
respVO.setFilePath(file.getPath());
respVO.setCreateTime(file.getCreateTime());
parsePathMetadata(file.getPath(), respVO);
if (respVO.getWorkTeamId() != null) {
WorkTeamRespDTO workTeam = workTeamApi.getWorkTeam(respVO.getWorkTeamId());
if (workTeam != null) {
respVO.setWorkTeamName(workTeam.getTeamName());
}
}
return respVO;
}
private void parsePathMetadata(String path, DeviceProductionDailyReportRespVO respVO) {
if (StringUtils.isBlank(path)) {
return;
}
for (String segment : path.split("/")) {
if (segment.startsWith("date=")) {
respVO.setReportDate(LocalDate.parse(segment.substring("date=".length())));
} else if (segment.startsWith("workTeamId=")) {
respVO.setWorkTeamId(Long.valueOf(segment.substring("workTeamId=".length())));
} else if (segment.startsWith("deviceIds=")) {
List<Long> deviceIds = new ArrayList<>();
for (String id : segment.substring("deviceIds=".length()).split("_")) {
if (StringUtils.isNumeric(id)) {
deviceIds.add(Long.valueOf(id));
}
}
respVO.setDeviceIds(deviceIds);
}
}
}
private DeviceProductionDailyReportRespVO buildBaseResp(LocalDate reportDate, WorkTeamRespDTO workTeam,
LocalDateTime startTime, LocalDateTime endTime, List<Long> deviceIds) {
DeviceProductionDailyReportRespVO respVO = new DeviceProductionDailyReportRespVO();
respVO.setReportDate(reportDate);
respVO.setWorkTeamId(workTeam.getId());
respVO.setWorkTeamName(workTeam.getTeamName());
respVO.setStartTime(startTime);
respVO.setEndTime(endTime);
respVO.setDeviceIds(deviceIds);
return respVO;
}
private LocalDateTime combineShiftTime(LocalDate date, LocalDateTime workTeamTime) {
return LocalDateTime.of(date, LocalTime.from(workTeamTime));
}
private Double getNumberValue(Map<String, Object> row, String code) {
if (row == null || StringUtils.isBlank(code)) {
return null;
}
Object value = row.get(code);
if (value == null) {
value = row.get(code.toLowerCase());
}
if (value instanceof Number) {
return ((Number) value).doubleValue();
}
if (value != null && StringUtils.isNotBlank(value.toString())) {
try {
return Double.valueOf(value.toString());
} catch (NumberFormatException e) {
log.warn("capacity point value is not numeric: code={}, value={}", code, value);
}
}
return null;
}
private String buildShiftText(WorkTeamRespDTO workTeam) {
if (StringUtils.isNotBlank(workTeam.getGroupType())) {
return workTeam.getGroupType();
}
return StrUtil.blankToDefault(workTeam.getTeamName(), "Shift:");
}
private Double toHour(LocalDateTime startTime, LocalDateTime endTime) {
return BigDecimal.valueOf(java.time.Duration.between(startTime, endTime).toMinutes())
.divide(BigDecimal.valueOf(60), 2, RoundingMode.HALF_UP).doubleValue();
}
private String joinDeviceIds(List<Long> deviceIds) {
return deviceIds.stream().sorted(Comparator.naturalOrder()).map(String::valueOf).collect(Collectors.joining("_"));
}
private String buildDeviceTags(List<Long> deviceIds) {
return deviceIds.stream().sorted(Comparator.naturalOrder()).map(this::buildDeviceTag).collect(Collectors.joining(""));
}
private String buildDeviceTag(Long deviceId) {
return "_" + deviceId + "_";
}
private void setCellValue(Sheet sheet, int rowIndex, int columnIndex, Object value) {
Row row = sheet.getRow(rowIndex);
if (row == null) {
row = sheet.createRow(rowIndex);
}
setCellValue(row, columnIndex, value);
}
private void setCellValue(Row row, int columnIndex, Object value) {
Cell cell = row.getCell(columnIndex);
if (cell == null) {
cell = row.createCell(columnIndex);
}
if (value instanceof Number) {
cell.setCellValue(((Number) value).doubleValue());
} else {
cell.setCellValue(value == null ? "" : value.toString());
}
}
}

@ -49,6 +49,7 @@ import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceAttributeMapper;
import cn.iocoder.yudao.module.iot.framework.mqtt.config.DefaultBizTopicSet;
import cn.iocoder.yudao.module.iot.framework.mqtt.consumer.IMqttservice;
import cn.iocoder.yudao.module.iot.framework.mqtt.consumer.IotMqttRuntimeCache;
import cn.iocoder.yudao.module.iot.util.MapListStatsCalculator;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -70,6 +71,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@ -96,6 +99,8 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.IMPORT_LIS
@Slf4j
public class DeviceServiceImpl implements DeviceService {
private static final int ADDRESS_VALUE_SCALE = 6;
@Resource
private DeviceMapper deviceMapper;
@Resource
@ -143,6 +148,9 @@ public class DeviceServiceImpl implements DeviceService {
@Resource
private DefaultBizTopicSet defaultBizTopicSet;
@Resource
private IotMqttRuntimeCache mqttRuntimeCache;
@Resource
private ErpProductUnitMapper productUnitMapper;
@ -195,6 +203,8 @@ public class DeviceServiceImpl implements DeviceService {
//新增点位规则模板
insertTemplatePoint(createReqVO, device);
mqttRuntimeCache.refreshDevice(device.getId());
mqttRuntimeCache.refreshTopic(device.getTopic());
return device;
}
@ -285,8 +295,14 @@ public class DeviceServiceImpl implements DeviceService {
validTopicExists(updateReqVO.getTopic(), updateReqVO.getId());
// 更新
DeviceDO oldDevice = deviceMapper.selectById(updateReqVO.getId());
DeviceDO updateObj = BeanUtils.toBean(updateReqVO, DeviceDO.class);
deviceMapper.updateById(updateObj);
mqttRuntimeCache.refreshDevice(updateReqVO.getId());
if (oldDevice != null) {
mqttRuntimeCache.refreshTopic(oldDevice.getTopic());
}
mqttRuntimeCache.refreshTopic(updateReqVO.getTopic());
}
private void validTopicExists(String topic, Long currentDeviceId) {
@ -649,8 +665,12 @@ public class DeviceServiceImpl implements DeviceService {
if (value == null) return null;
try {
Double result = Double.parseDouble(value.toString());
return ratio != null ? result * ratio : result;
BigDecimal result = new BigDecimal(value.toString().trim());
if (ratio != null) {
result = result.multiply(BigDecimal.valueOf(ratio));
}
result = result.setScale(ADDRESS_VALUE_SCALE, RoundingMode.HALF_UP).stripTrailingZeros();
return result.scale() < 0 ? result.setScale(0) : result;
} catch (NumberFormatException e) {
return value; // 转换失败返回原值
}
@ -2167,6 +2187,8 @@ public class DeviceServiceImpl implements DeviceService {
// 1. 更新设备启用状态
deviceDO.setIsEnable(enabled);
deviceMapper.updateById(deviceDO);
mqttRuntimeCache.refreshDevice(deviceDO.getId());
mqttRuntimeCache.refreshTopic(deviceDO.getTopic());
String topic = deviceDO.getTopic();

@ -37,6 +37,8 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -53,6 +55,8 @@ public class TDengineService {
@Value("${spring.datasource.dynamic.datasource.tdengine.url:}")
private String tdengineUrl;
private final ConcurrentMap<Long, Set<String>> tdColumnCache = new ConcurrentHashMap<>();
private String getTdengineDbName() {
if (StrUtil.isBlank(tdengineUrl)) {
return DEFAULT_TDENGINE_DATABASE;
@ -880,6 +884,7 @@ public class TDengineService {
try {
jdbcTemplate.execute(alterSql);
markTDColumnExists(deviceId, attributeCode);
log.info("TDengine 表新增列成功: table={}, column={}, type={}",
tableName, attributeCode, tdType);
@ -903,7 +908,7 @@ public class TDengineService {
}
String tableName = tdengineTable("d_" + deviceId);
Set<String> existingColumns = getTDColumnNames(tableName);
Set<String> existingColumns = new HashSet<>(loadTDColumns(deviceId));
int failureCount = 0;
for (DeviceContactModelDO deviceContactModel : deviceContactModels) {
@ -919,9 +924,11 @@ public class TDengineService {
try {
AddTDDatabaseColumn(deviceId, deviceContactModel);
existingColumns.add(attributeCode.toLowerCase());
markTDColumnExists(deviceId, attributeCode);
} catch (Exception e) {
if (columnExists(deviceId, attributeCode)) {
existingColumns.add(attributeCode.toLowerCase());
markTDColumnExists(deviceId, attributeCode);
continue;
}
failureCount++;
@ -947,6 +954,33 @@ public class TDengineService {
}
}
private Set<String> loadTDColumns(Long deviceId) {
return tdColumnCache.computeIfAbsent(deviceId, key -> ConcurrentHashMap.newKeySet()).isEmpty()
? reloadTDColumns(deviceId)
: tdColumnCache.get(deviceId);
}
private Set<String> reloadTDColumns(Long deviceId) {
Set<String> columns = ConcurrentHashMap.newKeySet();
columns.addAll(getTDColumnNames(tdengineTable("d_" + deviceId)));
tdColumnCache.put(deviceId, columns);
return columns;
}
private void markTDColumnExists(Long deviceId, String columnName) {
if (deviceId == null || StrUtil.isBlank(columnName)) {
return;
}
tdColumnCache.computeIfAbsent(deviceId, key -> ConcurrentHashMap.newKeySet())
.add(columnName.toLowerCase());
}
public void refreshTDColumnCache(Long deviceId) {
if (deviceId != null) {
tdColumnCache.remove(deviceId);
}
}
/**
@ -1289,12 +1323,24 @@ public class TDengineService {
return false;
}
String normalizedColumnName = columnName.toLowerCase();
Set<String> cachedColumns = loadTDColumns(deviceId);
if (cachedColumns.contains(normalizedColumnName)) {
return true;
}
Set<String> reloadedColumns = reloadTDColumns(deviceId);
if (reloadedColumns.contains(normalizedColumnName)) {
return true;
}
String tableName = tdengineTable("d_" + deviceId);
try {
// 方法1直接尝试查询该列
String testSql = "SELECT " + columnName + " FROM " + tableName + " LIMIT 0";
jdbcTemplate.execute(testSql);
markTDColumnExists(deviceId, columnName);
return true; // 执行成功,说明列存在
} catch (Exception e) {

@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO;
import cn.iocoder.yudao.module.iot.dal.mysql.deviceattributetype.DeviceAttributeTypeMapper;
import cn.iocoder.yudao.module.iot.framework.mqtt.consumer.IotMqttRuntimeCache;
import cn.iocoder.yudao.module.iot.service.device.TDengineService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
@ -43,6 +44,8 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService
private DeviceAttributeTypeMapper deviceAttributeTypeMapper;
@Resource
private TDengineService tDengineService;
@Resource
private IotMqttRuntimeCache mqttRuntimeCache;
@Override
public Long createDeviceContactModel(DeviceContactModelSaveReqVO createReqVO) {
@ -70,6 +73,7 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService
//新增td数据库列
tDengineService.AddTDDatabaseColumn(createReqVO.getDeviceId(),deviceContactModel);
refreshMqttRuntimeCache(createReqVO.getDeviceId());
// 返回
return deviceContactModel.getId();
@ -79,9 +83,12 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService
public void updateDeviceContactModel(DeviceContactModelSaveReqVO updateReqVO) {
// 校验存在
validateDeviceContactModelExists(updateReqVO.getId());
DeviceContactModelDO oldPoint = deviceContactModelMapper.selectById(updateReqVO.getId());
// 更新
DeviceContactModelDO updateObj = BeanUtils.toBean(updateReqVO, DeviceContactModelDO.class);
deviceContactModelMapper.updateById(updateObj);
refreshMqttRuntimeCache(oldPoint == null ? null : oldPoint.getDeviceId());
refreshMqttRuntimeCache(updateReqVO.getDeviceId());
}
@Override
@ -108,7 +115,16 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService
// 删除
deviceContactModelMapper.deleteById(id);
refreshMqttRuntimeCache(deviceId);
}
}
private void refreshMqttRuntimeCache(Long deviceId) {
if (deviceId == null) {
return;
}
mqttRuntimeCache.refreshDevice(deviceId);
tDengineService.refreshTDColumnCache(deviceId);
}
/**

@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.iot.controller.admin.devicepointrules.vo.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicepointrules.DevicePointRulesDO;
import cn.iocoder.yudao.module.iot.framework.mqtt.consumer.IotMqttRuntimeCache;
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;
@ -30,12 +31,15 @@ public class DevicePointRulesServiceImpl implements DevicePointRulesService {
@Resource
private DevicePointRulesMapper devicePointRulesMapper;
@Resource
private IotMqttRuntimeCache mqttRuntimeCache;
@Override
public Long createDevicePointRules(DevicePointRulesSaveReqVO createReqVO) {
// 插入
DevicePointRulesDO devicePointRules = BeanUtils.toBean(createReqVO, DevicePointRulesDO.class);
devicePointRulesMapper.insert(devicePointRules);
mqttRuntimeCache.refreshDevice(devicePointRules.getDeviceId());
// 返回
return devicePointRules.getId();
}
@ -44,6 +48,7 @@ public class DevicePointRulesServiceImpl implements DevicePointRulesService {
public void updateDevicePointRules(DevicePointRulesSaveReqVO updateReqVO) {
// 校验存在
validateDevicePointRulesExists(updateReqVO.getId());
DevicePointRulesDO oldRule = devicePointRulesMapper.selectById(updateReqVO.getId());
// 更新
DevicePointRulesDO updateObj = BeanUtils.toBean(updateReqVO, DevicePointRulesDO.class);
// if (!updateReqVO.getPointRulesVOList().isEmpty()){
@ -53,14 +58,18 @@ public class DevicePointRulesServiceImpl implements DevicePointRulesService {
// }
devicePointRulesMapper.updateById(updateObj);
mqttRuntimeCache.refreshDevice(oldRule == null ? null : oldRule.getDeviceId());
mqttRuntimeCache.refreshDevice(updateObj.getDeviceId());
}
@Override
public void deleteDevicePointRules(Long id) {
// 校验存在
validateDevicePointRulesExists(id);
DevicePointRulesDO oldRule = devicePointRulesMapper.selectById(id);
// 删除
devicePointRulesMapper.deleteById(id);
mqttRuntimeCache.refreshDevice(oldRule == null ? null : oldRule.getDeviceId());
}
private void validateDevicePointRulesExists(Long id) {
@ -85,4 +94,4 @@ public class DevicePointRulesServiceImpl implements DevicePointRulesService {
.eq(DevicePointRulesDO::getDeviceId,id).eq(DevicePointRulesDO::getIdentifier,"ALARM").orderByDesc(DevicePointRulesDO::getDeviceId));
}
}
}

@ -0,0 +1,9 @@
package cn.iocoder.yudao.module.mes.api.workteam;
import cn.iocoder.yudao.module.mes.api.workteam.dto.WorkTeamRespDTO;
public interface WorkTeamApi {
WorkTeamRespDTO getWorkTeam(Long id);
}

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.mes.api.workteam.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class WorkTeamRespDTO {
private Long id;
private String teamName;
private String groupType;
private LocalDateTime startTime;
private LocalDateTime endTime;
}

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.mes.api.workteam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.api.workteam.dto.WorkTeamRespDTO;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO;
import cn.iocoder.yudao.module.mes.service.workteam.WorkTeamService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class WorkTeamApiImpl implements WorkTeamApi {
@Resource
private WorkTeamService workTeamService;
@Override
public WorkTeamRespDTO getWorkTeam(Long id) {
WorkTeamDO workTeam = workTeamService.getWorkTeam(id);
return BeanUtils.toBean(workTeam, WorkTeamRespDTO.class);
}
}

@ -25,6 +25,7 @@ import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -115,7 +116,7 @@ public class AppOrgWorkerController {
@PostMapping("/createReport")
@Operation(summary = "创建生产报工单")
//@PreAuthorize("@ss.hasPermission('mes:produce-report:create')")
@PreAuthorize("@ss.hasPermission('mes:produce-report:create')")
public CommonResult<Long> createReport(@Valid @RequestBody AppReportSaveReqVO appSaveVo) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(appSaveVo.getReportDateString(), formatter);

@ -106,7 +106,7 @@ public class BaogongRecordController {
@GetMapping("/get")
@Operation(summary = "获得报工")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:baogong-record:query')")
// @PreAuthorize("@ss.hasPermission('mes:baogong-record:query')")
public CommonResult<BaogongRecordRespVO> getBaogongRecord(@RequestParam("id") Long id) {
BaogongRecordDO baogongRecord = baogongRecordService.getBaogongRecord(id);
return success(BeanUtils.toBean(baogongRecord, BaogongRecordRespVO.class));
@ -114,7 +114,7 @@ public class BaogongRecordController {
@GetMapping("/page")
@Operation(summary = "获得报工分页")
@PreAuthorize("@ss.hasPermission('mes:baogong-record:query')")
// @PreAuthorize("@ss.hasPermission('mes:baogong-record:query')")
public CommonResult<PageResult<BaogongRecordRespVO>> getBaogongRecordPage(@Valid BaogongRecordPageReqVO pageReqVO) {
PageResult<BaogongRecordDO> pageResult = baogongRecordService.getBaogongRecordPage(pageReqVO);
return success(new PageResult<>(buildVOList(pageResult.getList()), pageResult.getTotal()));
@ -147,7 +147,7 @@ public class BaogongRecordController {
@GetMapping("/stat-page")
@Operation(summary = "报工统计分页")
@PreAuthorize("@ss.hasPermission('mes:baogong-record:query')")
// @PreAuthorize("@ss.hasPermission('mes:baogong-record:query')")
public CommonResult<PageResult<BaogongRecordStatRespVO>> getBaogongRecordStatPage(@Valid BaogongRecordStatPageReqVO reqVO) {
return success(baogongRecordService.getBaogongRecordStatPage(reqVO));
}

@ -74,7 +74,7 @@ public class BomController {
@GetMapping("/get")
@Operation(summary = "获得产品BOM")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:bom:query')")
// @PreAuthorize("@ss.hasPermission('mes:bom:query')")
public CommonResult<BomRespVO> getBom(@RequestParam("id") Long id) {
BomDO bom = bomService.getBom(id);
return success(BeanUtils.toBean(bom, BomRespVO.class));
@ -89,7 +89,7 @@ public class BomController {
@GetMapping("/page")
@Operation(summary = "获得产品BOM分页")
@PreAuthorize("@ss.hasPermission('mes:bom:query')")
// @PreAuthorize("@ss.hasPermission('mes:bom:query')")
public CommonResult<PageResult<BomRespVO>> getBomPage(@Valid BomPageReqVO pageReqVO) {
PageResult<BomRespVO> pageResult = bomService.getBomPage(pageReqVO);
return success(pageResult);
@ -113,7 +113,7 @@ public class BomController {
@GetMapping("/bom-detail/list-by-bom-id")
@Operation(summary = "获得产品BOM明细列表")
@Parameter(name = "bomId", description = "BOM ID")
@PreAuthorize("@ss.hasPermission('mes:bom:query')")
// @PreAuthorize("@ss.hasPermission('mes:bom:query')")
public CommonResult<List<BomDetailRespVO>> getBomDetailListByBomId(@RequestParam("bomId") Long bomId) {
return success(bomService.getBomDetailListByBomId(bomId));
}

@ -65,7 +65,7 @@ public class CalHolidayController {
@GetMapping("/get")
@Operation(summary = "获得节假日设置")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:cal-holiday:query')")
// @PreAuthorize("@ss.hasPermission('mes:cal-holiday:query')")
public CommonResult<CalHolidayRespVO> getCalHoliday(@RequestParam("id") Long id) {
CalHolidayDO calHoliday = calHolidayService.getCalHoliday(id);
return success(BeanUtils.toBean(calHoliday, CalHolidayRespVO.class));
@ -73,7 +73,7 @@ public class CalHolidayController {
@GetMapping("/page")
@Operation(summary = "获得节假日设置分页")
@PreAuthorize("@ss.hasPermission('mes:cal-holiday:query')")
// @PreAuthorize("@ss.hasPermission('mes:cal-holiday:query')")
public CommonResult<PageResult<CalHolidayRespVO>> getCalHolidayPage(@Valid CalHolidayPageReqVO pageReqVO) {
PageResult<CalHolidayDO> pageResult = calHolidayService.getCalHolidayPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, CalHolidayRespVO.class));

@ -65,7 +65,7 @@ public class ProduceReportChangeRecordController {
@GetMapping("/get")
@Operation(summary = "获得报工变更记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:produce-report-change-record:query')")
// @PreAuthorize("@ss.hasPermission('mes:produce-report-change-record:query')")
public CommonResult<ProduceReportChangeRecordRespVO> getProduceReportChangeRecord(@RequestParam("id") Long id) {
ProduceReportChangeRecordDO produceReportChangeRecord = produceReportChangeRecordService.getProduceReportChangeRecord(id);
return success(BeanUtils.toBean(produceReportChangeRecord, ProduceReportChangeRecordRespVO.class));
@ -73,7 +73,7 @@ public class ProduceReportChangeRecordController {
@GetMapping("/page")
@Operation(summary = "获得报工变更记录分页")
@PreAuthorize("@ss.hasPermission('mes:produce-report-change-record:query')")
// @PreAuthorize("@ss.hasPermission('mes:produce-report-change-record:query')")
public CommonResult<PageResult<ProduceReportChangeRecordRespVO>> getProduceReportChangeRecordPage(@Valid ProduceReportChangeRecordPageReqVO pageReqVO) {
PageResult<ProduceReportChangeRecordDO> pageResult = produceReportChangeRecordService.getProduceReportChangeRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProduceReportChangeRecordRespVO.class));

@ -77,7 +77,7 @@ public class CriticalComponentController {
@GetMapping("/get")
@Operation(summary = "获得设备关键件")
@PreAuthorize("@ss.hasPermission('mes:critical-component:query')")
// @PreAuthorize("@ss.hasPermission('mes:critical-component:query')")
public CommonResult<CriticalComponentRespVO> getCriticalComponent(@RequestParam(value = "id", required = false) Long id,
@RequestParam(value = "code", required = false) String code) {
CriticalComponentDO criticalComponent = criticalComponentService.getCriticalComponent(id, code);
@ -89,7 +89,7 @@ public class CriticalComponentController {
@GetMapping("/page")
@Operation(summary = "获得设备关键件分页")
@PreAuthorize("@ss.hasPermission('mes:critical-component:query')")
// @PreAuthorize("@ss.hasPermission('mes:critical-component:query')")
public CommonResult<PageResult<CriticalComponentRespVO>> getCriticalComponentPage(@Valid CriticalComponentPageReqVO pageReqVO) {
PageResult<CriticalComponentDO> pageResult = criticalComponentService.getCriticalComponentPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, CriticalComponentRespVO.class));
@ -97,7 +97,7 @@ public class CriticalComponentController {
@GetMapping("/list")
@Operation(summary = "获得设备关键件列表")
@PreAuthorize("@ss.hasPermission('mes:critical-component:query')")
// @PreAuthorize("@ss.hasPermission('mes:critical-component:query')")
public CommonResult<List<CriticalComponentDO>> getCriticalComponentList() {
List<CriticalComponentDO> criticalComponentList= criticalComponentService.getCriticalComponentList();
return success(criticalComponentList);

@ -95,7 +95,7 @@ public class CrmCustomerController {
@GetMapping("/get")
@Operation(summary = "获得客户")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:customer:query')")
// @PreAuthorize("@ss.hasPermission('mes:customer:query')")
public CommonResult<CrmCustomerRespVO> getCustomer(@RequestParam("id") Long id) {
// 1. 获取客户
CrmCustomerDO customer = customerService.getCustomer(id);
@ -112,7 +112,7 @@ public class CrmCustomerController {
@GetMapping("/page")
@Operation(summary = "获得客户分页")
@PreAuthorize("@ss.hasPermission('mes:customer:query')")
// @PreAuthorize("@ss.hasPermission('mes:customer:query')")
public CommonResult<PageResult<CrmCustomerRespVO>> getCustomerPage(@Valid CrmCustomerPageReqVO pageVO) {
// 1. 查询客户分页
PageResult<CrmCustomerDO> pageResult = customerService.getCustomerPage(pageVO, getLoginUserId());
@ -152,7 +152,7 @@ public class CrmCustomerController {
@GetMapping("/put-pool-remind-page")
@Operation(summary = "获得待进入公海客户分页")
@PreAuthorize("@ss.hasPermission('mes:customer:query')")
// @PreAuthorize("@ss.hasPermission('mes:customer:query')")
public CommonResult<PageResult<CrmCustomerRespVO>> getPutPoolRemindCustomerPage(@Valid CrmCustomerPageReqVO pageVO) {
// 1. 查询客户分页
PageResult<CrmCustomerDO> pageResult = customerService.getPutPoolRemindCustomerPage(pageVO, getLoginUserId());

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save