From 6786ec0d3dce72db7c2e3317f4f0ac6b18c49417 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Sat, 1 Mar 2025 18:01:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(bpm):=20=E4=BC=98=E5=8C=96=E5=90=88?= =?UTF-8?q?=E5=90=8C=E5=92=8C=E5=9B=9E=E6=AC=BE=E9=A1=B5=E9=9D=A2=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -重构了合同和回款页面的查询逻辑,支持"我的"和"下属"两种关系的查询- 新增 UserLiveTreeApi接口,用于获取用户结构树 - 优化了 SQL 查询条件,提高了查询效率 - 新增厂区配件领用相关功能 --- .../FinancialPaymentController.java | 9 +- .../oa/vo/receipt/BpmOAReceiptPageReqVO.java | 3 + .../FinancialPaymentMapper.java | 2 + .../bpm/dal/mysql/oa/BpmOAContractMapper.java | 21 +--- .../bpm/dal/mysql/oa/BpmOAReceiptMapper.java | 22 +--- .../bpm/dal/mysql/task/BpmTaskExtMapper.java | 5 +- .../rpc/config/RpcConfiguration.java | 3 +- .../FinancialPaymentService.java | 7 ++ .../FinancialPaymentServiceImpl.java | 6 + .../service/oa/BpmOAContractServiceImpl.java | 14 ++- .../service/oa/BpmOAReceiptServiceImpl.java | 26 +++- .../FinancialPaymentMapper.xml | 61 +++++++++ .../hrm/api/userlivetree/UserLiveTreeApi.java | 24 ++++ .../api/userlivetree/UserLiveTreeApiImpl.java | 29 +++++ .../vo/customer/RentalCustomerSaveReqVO.java | 1 - .../enums/ErrorCodeConstants.java | 1 + .../AccessoriesCollarController.java | 93 ++++++++++++++ .../vo/AccessoriesCollarPageReqVO.java | 33 +++++ .../vo/AccessoriesCollarRespVO.java | 51 ++++++++ .../vo/AccessoriesCollarSaveReqVO.java | 35 ++++++ .../factoryinfo/FactoryInfoController.java | 11 ++ .../admin/factoryinfo/vo/FactoryProfitVO.java | 107 ++++++++++++++++ .../admin/staff/StaffController.java | 2 +- .../AccessoriesCollarDO.java | 56 +++++++++ .../AccessoriesCollarMapper.java | 27 ++++ .../mysql/factoryinfo/FactoryInfoMapper.java | 4 + .../AccessoriesCollarService.java | 55 +++++++++ .../AccessoriesCollarServiceImpl.java | 71 +++++++++++ .../factoryinfo/FactoryInfoService.java | 10 ++ .../factoryinfo/FactoryInfoServiceImpl.java | 30 +++++ .../service/staff/StaffServiceImpl.java | 4 +- .../mapper/factoryinfo/FactoryInfoMapper.xml | 116 ++++++++++++++++++ 32 files changed, 891 insertions(+), 48 deletions(-) create mode 100644 yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/hrm/api/userlivetree/UserLiveTreeApi.java create mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/api/userlivetree/UserLiveTreeApiImpl.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/AccessoriesCollarController.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarPageReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarRespVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarSaveReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryProfitVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/accessoriescollar/AccessoriesCollarDO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/accessoriescollar/AccessoriesCollarMapper.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/accessoriescollar/AccessoriesCollarService.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/accessoriescollar/AccessoriesCollarServiceImpl.java diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/financialpayment/FinancialPaymentController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/financialpayment/FinancialPaymentController.java index 6e6e0e7a..2608bfba 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/financialpayment/FinancialPaymentController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/financialpayment/FinancialPaymentController.java @@ -3,13 +3,13 @@ package cn.iocoder.yudao.module.bpm.controller.admin.financialpayment; import cn.hutool.core.collection.CollectionUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.bpm.controller.admin.financialpayment.vo.FinancialPaymentPageReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.financialpayment.vo.FinancialPaymentRespVO; import cn.iocoder.yudao.module.bpm.controller.admin.financialpayment.vo.FinancialPaymentSaveReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.financialpayment.vo.FinancialPaymentSaveVO; import cn.iocoder.yudao.module.bpm.controller.admin.financialpaymentitem.vo.FinancialPaymentItemRespVO; -import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpayment.FinancialPaymentDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpaymentitem.FinancialPaymentItemDO; import cn.iocoder.yudao.module.bpm.service.financialpayment.FinancialPaymentService; @@ -17,7 +17,6 @@ import cn.iocoder.yudao.module.bpm.service.financialpaymentitem.FinancialPayment import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -106,4 +105,10 @@ public class FinancialPaymentController { return success(BeanUtils.toBean(pageResult, FinancialPaymentRespVO.class)); } + @GetMapping("/total") + @Operation(summary = "获得财务支付统计信息") + public CommonResult getPaymentTotal(@Valid FinancialPaymentPageReqVO pageReqVO) { + FinancialPaymentDO paymentDO = financialPaymentService.getPaymentTotal(pageReqVO); + return success(BeanUtils.toBean(paymentDO, FinancialPaymentRespVO.class)); + } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/receipt/BpmOAReceiptPageReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/receipt/BpmOAReceiptPageReqVO.java index 39956594..b0c9855d 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/receipt/BpmOAReceiptPageReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/receipt/BpmOAReceiptPageReqVO.java @@ -28,4 +28,7 @@ public class BpmOAReceiptPageReqVO extends PageParam { @Schema(description = "查询模式") private String relation; + + @Schema(description = "合同编号") + private Long contractId; } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/financialpayment/FinancialPaymentMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/financialpayment/FinancialPaymentMapper.java index 49c6aa4c..f84b45ac 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/financialpayment/FinancialPaymentMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/financialpayment/FinancialPaymentMapper.java @@ -41,4 +41,6 @@ public interface FinancialPaymentMapper extends BaseMapperX * @param ids */ void cancel(@Param("ids") List ids); + + FinancialPaymentDO selectPaymentTotal(@Param("vo") FinancialPaymentPageReqVO pageReqVO); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAContractMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAContractMapper.java index 98c6959b..3e45f076 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAContractMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAContractMapper.java @@ -23,7 +23,7 @@ import java.util.Objects; @Mapper public interface BpmOAContractMapper extends BaseMapperX { default PageResult selectPage(BpmOAContractPageReqVO pageReqVO, - Long userId) { + List userIds) { MPJLambdaWrapperX query = new MPJLambdaWrapperX<>(); query.selectAll(BpmOAContractDO.class); @@ -39,25 +39,10 @@ public interface BpmOAContractMapper extends BaseMapperX { query.likeIfPresent(BpmOAContractDO::getCustomerName, pageReqVO.getCustomerName()); query.eqIfPresent(BpmOAContractDO::getStatus, pageReqVO.getStatus()); query.eqIfPresent(BpmOAContractDO::getResult, pageReqVO.getResult()); + query.inIfPresent(BpmOAContractDO::getUserId, userIds); query.apply(Objects.nonNull(pageReqVO.getSignatoryName()),"u.nickname Like CONCAT('%', {0}, '%')", pageReqVO.getSignatoryName()); query.apply(Objects.nonNull(pageReqVO.getCreateName()),"u1.nickname Like CONCAT('%', {0}, '%')", pageReqVO.getCreateName()); - if ("my".equals(pageReqVO.getRelation())) { - query.eq(BpmOAContractDO::getUserId, userId); - }else if ("sub".equals(pageReqVO.getRelation())){ - query.innerJoin("(" + - "\tSELECT DISTINCT\n" + - "\t\tu.id \n" + - "\tFROM\n" + - "\t\tsystem_users u\n" + - "\t\tINNER JOIN system_dept d ON d.leader_user_id = "+ userId +"\n" + - "\t\tINNER JOIN system_dept d1 ON d1.flag LIKE CONCAT( '%', d.id, '-' ) \n" + - "\t\tOR d1.flag LIKE CONCAT( '%-', d.id, '-%' ) \n" + - "\t\tOR d1.flag LIKE CONCAT( '-', d.id, '%' ) \n" + - "\tWHERE\n" + - "\t\tu.dept_id = d1.id \n" + - "\t\tAND u.STATUS = 0 \n" + - "\t) subordinate ON subordinate.id = t.user_id"); - } + query.orderByDesc(BpmOAContractDO::getCreateTime); return selectJoinPage(pageReqVO, BpmOAContractRespVO.class, query); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAReceiptMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAReceiptMapper.java index b3f357ad..a15513df 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAReceiptMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAReceiptMapper.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.bpm.dal.mysql.oa; +import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; @@ -18,7 +19,7 @@ import java.util.Objects; @Mapper public interface BpmOAReceiptMapper extends BaseMapperX { - default PageResult selectReceiptPage(BpmOAReceiptPageReqVO pageReqVO, Long userId) { + default PageResult selectReceiptPage(BpmOAReceiptPageReqVO pageReqVO, List userIds) { MPJLambdaWrapperX query = new MPJLambdaWrapperX<>(); query.selectAll(BpmOAReceiptDO.class); @@ -29,26 +30,11 @@ public interface BpmOAReceiptMapper extends BaseMapperX { query.leftJoin(BpmOAContractDO.class, "c", BpmOAContractDO::getId, BpmOAReceiptDO::getContractId); query.leftJoin("system_users u on u.id = t.creator"); query.eqIfPresent(BpmOAReceiptDO::getResult, pageReqVO.getResult()); + query.in(CollUtil.isNotEmpty(userIds), BpmOAContractDO::getUserId, userIds); + query.apply(Objects.nonNull(pageReqVO.getContractId()), "c.id = {0}", pageReqVO.getContractId()); query.apply(Objects.nonNull(pageReqVO.getCustomerName()), "c.customer_name LIKE CONCAT('%', {0}, '%')", pageReqVO.getCustomerName()); query.apply(Objects.nonNull(pageReqVO.getContractName()), "c.contract_name LIKE CONCAT('%', {0}, '%')", pageReqVO.getContractName()); query.apply(Objects.nonNull(pageReqVO.getCreateName()),"u.nickname Like CONCAT('%', {0}, '%')", pageReqVO.getCreateName()); - if ("my".equals(pageReqVO.getRelation())) { - query.eq(BpmOAContractDO::getUserId, userId); - }else if ("sub".equals(pageReqVO.getRelation())){ - query.innerJoin("(" + - "\tSELECT DISTINCT\n" + - "\t\tu.id \n" + - "\tFROM\n" + - "\t\tsystem_users u\n" + - "\t\tINNER JOIN system_dept d ON d.leader_user_id = "+ userId +"\n" + - "\t\tINNER JOIN system_dept d1 ON d1.flag LIKE CONCAT( '%', d.id, '-' ) \n" + - "\t\tOR d1.flag LIKE CONCAT( '%-', d.id, '-%' ) \n" + - "\t\tOR d1.flag LIKE CONCAT( '-', d.id, '%' ) \n" + - "\tWHERE\n" + - "\t\tu.dept_id = d1.id \n" + - "\t\tAND u.STATUS = 0 \n" + - "\t) subordinate ON subordinate.id = t.user_id"); - } query.orderByDesc(BpmOAReceiptDO::getCreateTime); return selectJoinPage(pageReqVO, BpmOAReceiptRespVO.class, query); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java index 0666850b..172bea01 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.bpm.dal.mysql.task; +import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -14,12 +15,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.mapstruct.ap.internal.util.Strings; import java.util.Arrays; import java.util.Collection; import java.util.List; -import java.util.Objects; @Mapper public interface BpmTaskExtMapper extends BaseMapperX { @@ -97,7 +96,7 @@ public interface BpmTaskExtMapper extends BaseMapperX { queryWrapperX.innerJoin(BpmProcessInstanceExtDO.class, on -> on .eq(BpmTaskExtDO::getProcessInstanceId, BpmProcessInstanceExtDO::getProcessInstanceId) - .in(Objects.nonNull(userIds), BpmProcessInstanceExtDO::getStartUserId, userIds) + .in(CollUtil.isNotEmpty(userIds), BpmProcessInstanceExtDO::getStartUserId, userIds) .eq(StringUtils.isNotEmpty(pageVO.getName()), BpmProcessInstanceExtDO::getName, pageVO.getName())); queryWrapperX.likeRight(BpmProcessInstanceExtDO::getProcessDefinitionId, "oa_"); queryWrapperX.eq(BpmTaskExtDO::getAssigneeUserId, userId); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/rpc/config/RpcConfiguration.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/rpc/config/RpcConfiguration.java index c41ca32e..7d6d3ff6 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/rpc/config/RpcConfiguration.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/rpc/config/RpcConfiguration.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.bpm.framework.rpc.config; import cn.iocoder.yudao.module.hrm.api.crmbusiness.BusinessApi; import cn.iocoder.yudao.module.hrm.api.crmcontract.ContractApi; import cn.iocoder.yudao.module.hrm.api.crmcustomer.CrmCustomerApi; +import cn.iocoder.yudao.module.hrm.api.userlivetree.UserLiveTreeApi; import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import cn.iocoder.yudao.module.infra.api.file.FileApi; import cn.iocoder.yudao.module.product.api.storeproduct.StoreProductApi; @@ -43,7 +44,7 @@ import org.springframework.context.annotation.Configuration; SubscribeMessageSendApi.class, SocialClientApi.class, UsersExtApi.class, AttendanceApi.class, BankApi.class, ConfigApi.class, PositionApi.class, SupplierApi.class, AssetsApi.class, AssetsTypeApi.class, AssetReceiveApi.class, AttendanceApi.class, AttendanceGroupApi.class, WorkOvertimeApi.class, HolidayApi.class, RentalOrderApi.class, RentalDepositRecordApi.class, ProjectApi.class, RentalItemsRecordApi.class,AdminOauthUserOtherInfoApi.class, StoreProductAttrValueApi.class, StoreProductApi.class, - ContractApi.class, BusinessApi.class, CrmCustomerApi.class, StaffApi.class, LoanApi.class, FactoryInfoApi.class + ContractApi.class, BusinessApi.class, CrmCustomerApi.class, StaffApi.class, LoanApi.class, FactoryInfoApi.class, UserLiveTreeApi.class }) public class RpcConfiguration { } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentService.java index 9bc9cdce..b782b2e9 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentService.java @@ -88,4 +88,11 @@ public interface FinancialPaymentService { * @return 支付信息列表 */ List getFinancialPaymentList(List processInstanceIds); + + /** + * 获取支付信息 统计 + * @param pageReqVO 查询条件 + * @return 统计信息 + */ + FinancialPaymentDO getPaymentTotal(FinancialPaymentPageReqVO pageReqVO); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentServiceImpl.java index 5904a9c8..a8dc10f7 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentServiceImpl.java @@ -252,4 +252,10 @@ public class FinancialPaymentServiceImpl implements FinancialPaymentService { return financialPaymentMapper.selectList(FinancialPaymentDO::getProcessInstanceId, processInstanceIds); } + + @Override + public FinancialPaymentDO getPaymentTotal(FinancialPaymentPageReqVO pageReqVO) { + pageReqVO.setReceiveUserId(getLoginUserId()); + return financialPaymentMapper.selectPaymentTotal(pageReqVO); + } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java index 509554d7..b0ff3352 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java @@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.hrm.api.crmcontract.ContractApi; import cn.iocoder.yudao.module.hrm.api.crmcontract.dto.CrmContractProductDTO; import cn.iocoder.yudao.module.hrm.api.crmcustomer.CrmCustomerApi; import cn.iocoder.yudao.module.hrm.api.crmcustomer.dto.CrmCustomerDTO; +import cn.iocoder.yudao.module.hrm.api.userlivetree.UserLiveTreeApi; import cn.iocoder.yudao.module.product.api.storeproduct.StoreProductApi; import cn.iocoder.yudao.module.product.api.storeproductattrvalue.StoreProductAttrValueApi; import cn.iocoder.yudao.module.product.api.storeproductattrvalue.dto.StoreProductAttrValueApiDTO; @@ -107,6 +108,9 @@ public class BpmOAContractServiceImpl extends BpmOABaseService implements BpmOAC @Resource private CrmCustomerApi customerApi; + @Resource + private UserLiveTreeApi userLiveTreeApi; + @Override public Long createContract(Long userId, BpmOAContractCreateReqVO createReqVO) { // 新增合同DO @@ -265,7 +269,15 @@ public class BpmOAContractServiceImpl extends BpmOABaseService implements BpmOAC @Override public PageResult getContractPage(BpmOAContractPageReqVO pageReqVO) { - return contractMapper.selectPage(pageReqVO, getLoginUserId()); + List userIds = new ArrayList<>(); + if ("my".equals(pageReqVO.getRelation())) { + userIds.add(getLoginUserId()); + }else if ("sub".equals(pageReqVO.getRelation())){ + // 查询当前用户 所有下级用户编号 + userIds.addAll(userLiveTreeApi.getItemIdsByUserId(getLoginUserId()).getCheckedData()); + } + + return contractMapper.selectPage(pageReqVO, userIds); } @Override diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReceiptServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReceiptServiceImpl.java index 15b08d18..7e9640d3 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReceiptServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReceiptServiceImpl.java @@ -12,11 +12,15 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.receipt.BpmOAReceiptCr import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.receipt.BpmOAReceiptPageReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.receipt.BpmOAReceiptRespVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.receipt.ReceiptStatisticsVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAContractDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAReceiptDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAContractMapper; import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAReceiptMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService; import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; +import cn.iocoder.yudao.module.hrm.api.userlivetree.UserLiveTreeApi; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.flowable.engine.runtime.ProcessInstance; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -25,6 +29,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,6 +65,12 @@ public class BpmOAReceiptServiceImpl extends BpmOABaseService implements BpmOARe @Resource private BpmProcessInstanceService bpmProcessInstanceService; + @Resource + private UserLiveTreeApi userLiveTreeApi; + + @Resource + private BpmOAContractMapper contractMapper; + @Override public Long createReceipt(Long userId, BpmOAReceiptCreateReqVO createReqVO) { @@ -103,7 +114,10 @@ public class BpmOAReceiptServiceImpl extends BpmOABaseService implements BpmOARe ProcessInstance instance = bpmProcessInstanceService.getProcessInstance(processInstanceId); if (instance.isEnded()) { - + // 更新合同表的回款金额 + contractMapper.update(null, new LambdaUpdateWrapper() + .setSql("return_money = return_money + " + receiptDO.getMoney()) + .eq(BpmOAContractDO::getId, receiptDO.getContractId())); } } @@ -133,7 +147,15 @@ public class BpmOAReceiptServiceImpl extends BpmOABaseService implements BpmOARe @Override public PageResult getReceiptPage(BpmOAReceiptPageReqVO pageReqVO) { - return receiptMapper.selectReceiptPage(pageReqVO, getLoginUserId()); + List userIds = new ArrayList<>(); + if ("my".equals(pageReqVO.getRelation())) { + userIds.add(getLoginUserId()); + }else if ("sub".equals(pageReqVO.getRelation())){ + // 查询当前用户 所有下级用户编号 + userIds.addAll(userLiveTreeApi.getItemIdsByUserId(getLoginUserId()).getCheckedData()); + } + + return receiptMapper.selectReceiptPage(pageReqVO, userIds); } @Override diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/financialpayment/FinancialPaymentMapper.xml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/financialpayment/FinancialPaymentMapper.xml index 377d42ac..811c918d 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/financialpayment/FinancialPaymentMapper.xml +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/financialpayment/FinancialPaymentMapper.xml @@ -102,4 +102,65 @@ a.id = #{id} + + diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/hrm/api/userlivetree/UserLiveTreeApi.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/hrm/api/userlivetree/UserLiveTreeApi.java new file mode 100644 index 00000000..5a80b3fd --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/hrm/api/userlivetree/UserLiveTreeApi.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.hrm.api.userlivetree; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.hrm.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory = +@Tag(name = "RPC 服务 - CRM用户结构树") +public interface UserLiveTreeApi { + + String PREFIX = ApiConstants.PREFIX + "/crm/userLiveTree"; + + @GetMapping(PREFIX + "/get-list") + @Operation(summary = "通过用户id获取所有子集用户id") + @Parameter(name = "id", description = "用户编号", required = true, example = "1024") + CommonResult> getItemIdsByUserId(@RequestParam("id") Long id); +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/api/userlivetree/UserLiveTreeApiImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/api/userlivetree/UserLiveTreeApiImpl.java new file mode 100644 index 00000000..7edeff52 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/api/userlivetree/UserLiveTreeApiImpl.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.crm.api.userlivetree; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.crm.service.userlivetree.UserLiveTreeService; +import cn.iocoder.yudao.module.hrm.api.userlivetree.UserLiveTreeApi; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +/** + * Flowable CRM Api 实现类 + */ +@RestController +@Validated +public class UserLiveTreeApiImpl implements UserLiveTreeApi { + + @Resource + private UserLiveTreeService userLiveTreeService; + + @Override + public CommonResult> getItemIdsByUserId(Long id) { + + return success(userLiveTreeService.getItemIdsByUserId(id)); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/rental/vo/customer/RentalCustomerSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/rental/vo/customer/RentalCustomerSaveReqVO.java index 527e0cab..a419c939 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/rental/vo/customer/RentalCustomerSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/rental/vo/customer/RentalCustomerSaveReqVO.java @@ -14,7 +14,6 @@ public class RentalCustomerSaveReqVO { private Long id; @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") - @NotEmpty(message = "客户名称不能为空") private String name; @Schema(description = "手机号") diff --git a/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java b/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java index 9e1e8c46..54728042 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java +++ b/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java @@ -18,6 +18,7 @@ public interface ErrorCodeConstants { ErrorCode SIZE_NOT_EXISTS = new ErrorCode(1_000_000_004, "规格不存在"); ErrorCode STAFF_NOT_EXISTS = new ErrorCode(1_000_000_005, "员工不存在"); + ErrorCode ACCESSORIES_COLLAR_NOT_EXISTS = new ErrorCode(1_000_000_006, "配件费用不存在"); //打包线模块 ErrorCode PACKAGE_NOT_EXISTS = new ErrorCode(1_000_001_001, "打包线信息不存在"); diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/AccessoriesCollarController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/AccessoriesCollarController.java new file mode 100644 index 00000000..19398ef8 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/AccessoriesCollarController.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo.AccessoriesCollarPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo.AccessoriesCollarRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo.AccessoriesCollarSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.accessoriescollar.AccessoriesCollarDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; +import cn.iocoder.yudao.module.smartfactory.service.accessoriescollar.AccessoriesCollarService; +import cn.iocoder.yudao.module.smartfactory.service.factoryinfo.FactoryInfoService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.Map; +import java.util.Set; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +@Tag(name = "管理后台 - 厂区配件领用") +@RestController +@RequestMapping("/smartfactory/accessories-collar") +@Validated +public class AccessoriesCollarController { + + @Resource + private AccessoriesCollarService accessoriesCollarService; + + @Resource + private FactoryInfoService factoryInfoService; + + @PostMapping("/create") + @Operation(summary = "创建厂区配件领用") + @PreAuthorize("@ss.hasPermission('smartfactory:accessories-collar:create')") + public CommonResult createAccessoriesCollar(@Valid @RequestBody AccessoriesCollarSaveReqVO createReqVO) { + return success(accessoriesCollarService.createAccessoriesCollar(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新厂区配件领用") + @PreAuthorize("@ss.hasPermission('smartfactory:accessories-collar:update')") + public CommonResult updateAccessoriesCollar(@Valid @RequestBody AccessoriesCollarSaveReqVO updateReqVO) { + accessoriesCollarService.updateAccessoriesCollar(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除厂区配件领用") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('smartfactory:accessories-collar:delete')") + public CommonResult deleteAccessoriesCollar(@RequestParam("id") Long id) { + accessoriesCollarService.deleteAccessoriesCollar(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得厂区配件领用") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('smartfactory:accessories-collar:query')") + public CommonResult getAccessoriesCollar(@RequestParam("id") Long id) { + AccessoriesCollarDO accessoriesCollar = accessoriesCollarService.getAccessoriesCollar(id); + return success(BeanUtils.toBean(accessoriesCollar, AccessoriesCollarRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得厂区配件领用分页") + @PreAuthorize("@ss.hasPermission('smartfactory:accessories-collar:query')") + public CommonResult> getAccessoriesCollarPage(@Valid AccessoriesCollarPageReqVO pageReqVO) { + PageResult pageResult = BeanUtils.toBean(accessoriesCollarService.getAccessoriesCollarPage(pageReqVO), AccessoriesCollarRespVO.class); + if (CollUtil.isNotEmpty(pageResult.getList())) { + // 获取工厂编号 + Set factoryIds = convertSet(pageResult.getList(), AccessoriesCollarRespVO::getFactoryId); + // 获取工厂信息 + Map factoryMap = convertMap(factoryInfoService.getFactoryList(factoryIds), FactoryInfoDO::getId); + + pageResult.getList().forEach(data -> { + // 设置工厂名称 + data.setFactoryName(factoryMap.containsKey(data.getFactoryId()) ? factoryMap.get(data.getFactoryId()).getShortName() : null); + }); + } + return success(BeanUtils.toBean(pageResult, AccessoriesCollarRespVO.class)); + } +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarPageReqVO.java new file mode 100644 index 00000000..4a1a6197 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarPageReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.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.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 厂区配件领用分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class AccessoriesCollarPageReqVO extends PageParam { + + @Schema(description = "工厂编号", example = "10000008") + private Long factoryId; + + @Schema(description = "领用月份 | YYYY-MM") + private String month; + + @Schema(description = "状态 | 0未确认 1已确认", example = "0") + private Integer status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarRespVO.java new file mode 100644 index 00000000..a89229ca --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 厂区配件领用 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AccessoriesCollarRespVO { + + @Schema(description = "厂区配件领用表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("厂区配件领用表单主键") + private Long id; + + @Schema(description = "工厂编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000008") + @ExcelProperty("工厂编号") + private Long factoryId; + + @Schema(description = "工厂名称", example = "工厂名称") + private String factoryName; + + @Schema(description = "领用月份 | YYYY-MM") + @ExcelProperty("领用月份 | YYYY-MM") + private String month; + + @Schema(description = "叉车配件费用") + @ExcelProperty("叉车配件费用") + private BigDecimal forkliftAccessories; + + @Schema(description = "打包配件费用") + @ExcelProperty("打包配件费用") + private BigDecimal packageAccessories; + + @Schema(description = "搬运劳保费用") + @ExcelProperty("搬运劳保费用") + private BigDecimal transportationAmount; + + @Schema(description = "状态 | 0未确认 1已确认", example = "0") + @ExcelProperty("状态 | 0未确认 1已确认") + private Integer status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarSaveReqVO.java new file mode 100644 index 00000000..8ae476f6 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/accessoriescollar/vo/AccessoriesCollarSaveReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 厂区配件领用新增/修改 Request VO") +@Data +public class AccessoriesCollarSaveReqVO { + + @Schema(description = "厂区配件领用表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long id; + + @Schema(description = "工厂编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000008") + @NotNull(message = "工厂编号不能为空") + private Long factoryId; + + @Schema(description = "领用月份 | YYYY-MM") + private String month; + + @Schema(description = "叉车配件费用") + private BigDecimal forkliftAccessories; + + @Schema(description = "打包配件费用") + private BigDecimal packageAccessories; + + @Schema(description = "搬运劳保费用") + private BigDecimal transportationAmount; + + @Schema(description = "状态 | 0未确认 1已确认", example = "0") + private Integer status; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java index c3d42134..7c35da29 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java @@ -153,6 +153,17 @@ public class FactoryInfoController { return success(BeanUtils.toBean(pageResult, FactoryInfoRespVO.class)); } + @GetMapping("/get-profit") + @Operation(summary = "获得工厂每月利润") + @Parameter(name = "factoryId", description = "工厂编号") + @Parameter(name = "month", description = "查询月份") + @PreAuthorize("@ss.hasPermission('smartfactory:factory-info:query')") + public CommonResult> getProfit(@RequestParam(name = "factoryId", required = false) Long factoryId, + @RequestParam("month") String month) { + + return success(factoryInfoService.getProfit(factoryId, month)); + } + @GetMapping("/export-excel") @Operation(summary = "导出工厂信息 Excel") @PreAuthorize("@ss.hasPermission('smartfactory:factory-info:export')") diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryProfitVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryProfitVO.java new file mode 100644 index 00000000..8aaf611c --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryProfitVO.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 工厂利润VO") +@Data +public class FactoryProfitVO { + + @Schema(description = "工厂编号", example = "1024") + private Long factoryId; + + @Schema(description = "工厂名称", example = "芋道") + private String factoryName; + + @Schema(description = "结算月份", example = "2023-01") + private String settlementMonth; + + @Schema(description = "叉车收入", example = "10000") + private BigDecimal forkliftRevenue; + + @Schema(description = "打包收入", example = "10000") + private BigDecimal packageRevenue; + + @Schema(description = "搬运收入") + private BigDecimal porterageRevenue; + + @Schema(description = "叉车租赁收入") + private BigDecimal forkliftRentalRevenue; + + @Schema(description = "运输收入") + private BigDecimal transportationRevenue; + + @Schema(description = "叉车扣款") + private BigDecimal forkliftDeduction; + + @Schema(description = "打包扣款") + private BigDecimal packageDeduction; + + @Schema(description = "搬运扣款") + private BigDecimal porterageDeduction; + + @Schema(description = "水电扣款") + private BigDecimal hydropower; + + @Schema(description = "工伤保险") + private BigDecimal employment; + + @Schema(description = "其他(理赔、扣点)") + private BigDecimal other; + + @Schema(description = "叉车工资") + private BigDecimal forkliftSalary; + + @Schema(description = "打包工资") + private BigDecimal packageSalary; + + @Schema(description = "搬运工资") + private BigDecimal porterageSalary; + + @Schema(description = "运输工资") + private BigDecimal transportSalary; + + @Schema(description = "其他工资") + private BigDecimal otherSalary; + + @Schema(description = "叉车配件") + private BigDecimal forkliftAccessories; + + @Schema(description = "打包配件") + private BigDecimal packageAccessories; + + @Schema(description = "搬运劳保") + private BigDecimal transportationAmount; + + @Schema(description = "工伤赔偿") + private BigDecimal injuryAmount; + + @Schema(description = "借支") + private BigDecimal loanAmount; + + @Schema(description = "差旅费用") + private BigDecimal travelExpenses; + + @Schema(description = "其他") + private BigDecimal otherAmount; + + @Schema(description = "叉车支出") + private BigDecimal forkliftExpenses; + + @Schema(description = "打包支出") + private BigDecimal packageExpenses; + + @Schema(description = "搬运支出") + private BigDecimal transportationExpenses; + + @Schema(description = "叉车毛利") + private BigDecimal forkliftGrossProfit; + + @Schema(description = "打包毛利") + private BigDecimal packageGrossProfit; + + @Schema(description = "搬运毛利") + private BigDecimal porterageGrossProfit; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java index bc314a8c..2e50bc68 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java @@ -110,7 +110,7 @@ public class StaffController { Map factoryInfoMap = convertMap(factoryInfoService.getFactoryList(factoryIds), FactoryInfoDO::getId); result.getList().forEach(data -> { // 设置工厂名称 - data.setFactoryName(factoryInfoMap.containsKey(data.getFactoryId()) ? factoryInfoMap.get(data.getFactoryId()).getName() : null); + data.setFactoryName(factoryInfoMap.containsKey(data.getFactoryId()) ? factoryInfoMap.get(data.getFactoryId()).getShortName() : null); }); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/accessoriescollar/AccessoriesCollarDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/accessoriescollar/AccessoriesCollarDO.java new file mode 100644 index 00000000..4ce475e2 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/accessoriescollar/AccessoriesCollarDO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.smartfactory.dal.dataobject.accessoriescollar; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.math.BigDecimal; + +/** + * 厂区配件领用 DO + * + * @author 符溶馨 + */ +@TableName("sf_accessories_collar") +@KeySequence("sf_accessories_collar_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AccessoriesCollarDO extends BaseDO { + + /** + * 厂区配件领用表单主键 + */ + @TableId + private Long id; + /** + * 工厂编号 + */ + private Long factoryId; + /** + * 领用月份 | YYYY-MM + */ + private String month; + /** + * 叉车配件费用 + */ + private BigDecimal forkliftAccessories; + /** + * 打包配件费用 + */ + private BigDecimal packageAccessories; + /** + * 搬运劳保费用 + */ + private BigDecimal transportationAmount; + /** + * 状态 | 0未确认 1已确认 + */ + private Integer status; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/accessoriescollar/AccessoriesCollarMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/accessoriescollar/AccessoriesCollarMapper.java new file mode 100644 index 00000000..663d3c0f --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/accessoriescollar/AccessoriesCollarMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.smartfactory.dal.mysql.accessoriescollar; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo.AccessoriesCollarPageReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.accessoriescollar.AccessoriesCollarDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 厂区配件领用 Mapper + * + * @author 符溶馨 + */ +@Mapper +public interface AccessoriesCollarMapper extends BaseMapperX { + + default PageResult selectPage(AccessoriesCollarPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AccessoriesCollarDO::getFactoryId, reqVO.getFactoryId()) + .eqIfPresent(AccessoriesCollarDO::getMonth, reqVO.getMonth()) + .eqIfPresent(AccessoriesCollarDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(AccessoriesCollarDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AccessoriesCollarDO::getId)); + } + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java index fe90ae32..8122a68a 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryProfitVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.FactoryRollDataRespVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import org.apache.ibatis.annotations.Mapper; @@ -53,4 +54,7 @@ public interface FactoryInfoMapper extends BaseMapperX { * @return 返回与给定工厂ID相关联的天气代码,类型为String。 */ String getWeatherCodeByFactoryId(@Param("factoryId") Long factoryId, @Param("areaCode") String areaCode); + + List selectProfit(@Param("factoryId") Long factoryId, + @Param("month") String month); } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/accessoriescollar/AccessoriesCollarService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/accessoriescollar/AccessoriesCollarService.java new file mode 100644 index 00000000..3e8a7be0 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/accessoriescollar/AccessoriesCollarService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.smartfactory.service.accessoriescollar; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo.AccessoriesCollarPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo.AccessoriesCollarSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.accessoriescollar.AccessoriesCollarDO; + +import javax.validation.Valid; + +/** + * 厂区配件领用 Service 接口 + * + * @author 符溶馨 + */ +public interface AccessoriesCollarService { + + /** + * 创建厂区配件领用 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createAccessoriesCollar(@Valid AccessoriesCollarSaveReqVO createReqVO); + + /** + * 更新厂区配件领用 + * + * @param updateReqVO 更新信息 + */ + void updateAccessoriesCollar(@Valid AccessoriesCollarSaveReqVO updateReqVO); + + /** + * 删除厂区配件领用 + * + * @param id 编号 + */ + void deleteAccessoriesCollar(Long id); + + /** + * 获得厂区配件领用 + * + * @param id 编号 + * @return 厂区配件领用 + */ + AccessoriesCollarDO getAccessoriesCollar(Long id); + + /** + * 获得厂区配件领用分页 + * + * @param pageReqVO 分页查询 + * @return 厂区配件领用分页 + */ + PageResult getAccessoriesCollarPage(AccessoriesCollarPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/accessoriescollar/AccessoriesCollarServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/accessoriescollar/AccessoriesCollarServiceImpl.java new file mode 100644 index 00000000..440debde --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/accessoriescollar/AccessoriesCollarServiceImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.smartfactory.service.accessoriescollar; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo.AccessoriesCollarPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.accessoriescollar.vo.AccessoriesCollarSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.accessoriescollar.AccessoriesCollarDO; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.accessoriescollar.AccessoriesCollarMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.ACCESSORIES_COLLAR_NOT_EXISTS; + +/** + * 厂区配件领用 Service 实现类 + * + * @author 符溶馨 + */ +@Service +@Validated +public class AccessoriesCollarServiceImpl implements AccessoriesCollarService { + + @Resource + private AccessoriesCollarMapper accessoriesCollarMapper; + + @Override + public Long createAccessoriesCollar(AccessoriesCollarSaveReqVO createReqVO) { + // 插入 + AccessoriesCollarDO accessoriesCollar = BeanUtils.toBean(createReqVO, AccessoriesCollarDO.class); + accessoriesCollarMapper.insert(accessoriesCollar); + // 返回 + return accessoriesCollar.getId(); + } + + @Override + public void updateAccessoriesCollar(AccessoriesCollarSaveReqVO updateReqVO) { + // 校验存在 + validateAccessoriesCollarExists(updateReqVO.getId()); + // 更新 + AccessoriesCollarDO updateObj = BeanUtils.toBean(updateReqVO, AccessoriesCollarDO.class); + accessoriesCollarMapper.updateById(updateObj); + } + + @Override + public void deleteAccessoriesCollar(Long id) { + // 校验存在 + validateAccessoriesCollarExists(id); + // 删除 + accessoriesCollarMapper.deleteById(id); + } + + private void validateAccessoriesCollarExists(Long id) { + if (accessoriesCollarMapper.selectById(id) == null) { + throw exception(ACCESSORIES_COLLAR_NOT_EXISTS); + } + } + + @Override + public AccessoriesCollarDO getAccessoriesCollar(Long id) { + return accessoriesCollarMapper.selectById(id); + } + + @Override + public PageResult getAccessoriesCollarPage(AccessoriesCollarPageReqVO pageReqVO) { + return accessoriesCollarMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java index 7aebdccb..cb6daa40 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.smartfactory.service.factoryinfo; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoPageReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryProfitVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryUpdateStatusReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.FactoryRollDataRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.ProvincesDataRespVO; @@ -136,4 +137,13 @@ public interface FactoryInfoService { * @param updateReqVO 更新信息 */ void updateFactoryStatus(FactoryUpdateStatusReqVO updateReqVO); + + /** + * 工厂每月利润 + * + * @param factoryId 工厂编号 + * @param month 月份 + * @return 利润列表 + */ + List getProfit(Long factoryId, String month); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java index dd1c5775..d351569e 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.smartfactory.service.factoryinfo; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.DeptTypeEnum; @@ -10,6 +11,7 @@ import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoPageReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryProfitVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryUpdateStatusReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.FactoryRollDataRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.ProvincesDataRespVO; @@ -280,4 +282,32 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { deptRespDTO.setStatus(updateReqVO.getStatus()); deptApi.updateFactoryDept(deptRespDTO); } + + @Override + public List getProfit(Long factoryId, String month) { + + List result = factoryInfoMapper.selectProfit(factoryId, month); + if (CollUtil.isNotEmpty(result)) { + // 设置叉车毛利、打包毛利、搬运毛利 = 收入 - 扣款 - 人员工资 - 支出 + result.forEach(vo -> { + // 设置叉车毛利 + vo.setForkliftGrossProfit(vo.getForkliftRevenue() + .subtract(vo.getForkliftDeduction()) + .subtract(vo.getForkliftSalary()) + .subtract(vo.getForkliftExpenses())); + // 设置打包毛利 + vo.setPackageGrossProfit(vo.getPackageRevenue() + .subtract(vo.getPackageDeduction()) + .subtract(vo.getPackageSalary()) + .subtract(vo.getPackageExpenses())); + // 设置搬运毛利 + vo.setPorterageGrossProfit(vo.getPorterageRevenue() + .subtract(vo.getPorterageDeduction()) + .subtract(vo.getPorterageSalary()) + .subtract(vo.getTransportationExpenses())); + }); + } + + return result; + } } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java index 899b83ae..8356df13 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java @@ -110,7 +110,9 @@ public class StaffServiceImpl implements StaffService { // 设置工种名称 dos.forEach(item -> { - item.setPostName(workTypeMap.getOrDefault(item.getWorkTypeId().toString(), "")); + if (item.getWorkTypeId() != null) { + item.setPostName(workTypeMap.getOrDefault(item.getWorkTypeId().toString(), "")); + } }); vo.setTotal(dos.size()); diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryinfo/FactoryInfoMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryinfo/FactoryInfoMapper.xml index a59c28cd..0fb21570 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryinfo/FactoryInfoMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryinfo/FactoryInfoMapper.xml @@ -31,4 +31,120 @@ left join sf_factory_info as b on a.code = #{areaCode} where b.id = #{factoryId} + + \ No newline at end of file