From bdb0c2128ce6cb42a7280c5fc2596ac906bcffb7 Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Mon, 1 Jun 2026 17:43:19 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/CostCalculationEmployeeEntity.java | 101 ++++++++ .../entity/CostCalculationOutputEntity.java | 99 ++++++++ .../pojo/entity/CostStatisticsEntity.java | 12 + .../pojo/vo/CostCalculationEmployeeVO.java | 46 ++++ .../cost/pojo/vo/CostCalculationOutputVO.java | 46 ++++ .../CostCalculationEmployeeController.java | 227 ++++++++++++++++++ .../CostCalculationOutputController.java | 224 +++++++++++++++++ .../excel/CostCalculationEmployeeExcel.java | 70 ++++++ .../excel/CostCalculationOutputExcel.java | 76 ++++++ .../mapper/CostCalculationEmployeeMapper.java | 64 +++++ .../mapper/CostCalculationEmployeeMapper.xml | 36 +++ .../mapper/CostCalculationOutputMapper.java | 64 +++++ .../mapper/CostCalculationOutputMapper.xml | 42 ++++ .../cost/mapper/CostStatisticsMapper.java | 4 + .../desk/cost/mapper/CostStatisticsMapper.xml | 26 ++ .../ICostCalculationEmployeeService.java | 62 +++++ .../ICostCalculationOutputService.java | 62 +++++ .../CostCalculationEmployeeServiceImpl.java | 64 +++++ .../CostCalculationOutputServiceImpl.java | 64 +++++ .../impl/CostStatisticsServiceImpl.java | 60 +++-- .../CostCalculationEmployeeWrapper.java | 60 +++++ .../wrapper/CostCalculationOutputWrapper.java | 60 +++++ 22 files changed, 1552 insertions(+), 17 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostCalculationEmployeeEntity.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostCalculationOutputEntity.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/vo/CostCalculationEmployeeVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/vo/CostCalculationOutputVO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationOutputController.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/CostCalculationEmployeeExcel.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/CostCalculationOutputExcel.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.xml create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationOutputMapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationOutputMapper.xml create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/ICostCalculationEmployeeService.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/ICostCalculationOutputService.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/impl/CostCalculationEmployeeServiceImpl.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/impl/CostCalculationOutputServiceImpl.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/wrapper/CostCalculationEmployeeWrapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/cost/wrapper/CostCalculationOutputWrapper.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostCalculationEmployeeEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostCalculationEmployeeEntity.java new file mode 100644 index 000000000..5c866b428 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostCalculationEmployeeEntity.java @@ -0,0 +1,101 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serial; + +/** + * 成本计算产值配置表 实体类 + * + * @author BladeX + * @since 2026-04-21 + */ +@Data +@TableName("MES_COST_CALCULATION_EMPLOYEE") +@Schema(description = "MesCostCalculationEmployee对象") +@EqualsAndHashCode(callSuper = true) +public class CostCalculationEmployeeEntity extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * 作业中心id + */ + @Schema(description = "作业中心id") + private Long workCenterId; + + /** + * 作业中心名称 + */ + @Schema(description = "作业中心编码") + private String workCenterCode; + + /** + * 作业中心名称 + */ + @Schema(description = "作业中心名称") + private String workCenterName; + + /** + * 员工工号 + */ + @Schema(description = "员工工号") + private String employeeCode; + + /** + * 员工姓名 + */ + @Schema(description = "员工姓名") + private String employeeName; + + + /** + * 备注 + */ + @Schema(description = "备注") + private String remarks; + + /** + * 创建人姓名 + */ + @Schema(description = "创建人姓名") + private String createUserName; + + /** + * 更新人姓名 + */ + @Schema(description = "更新人姓名") + private String updateUserName; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostCalculationOutputEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostCalculationOutputEntity.java new file mode 100644 index 000000000..a9c50564f --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostCalculationOutputEntity.java @@ -0,0 +1,99 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serial; + +/** + * 成本计算产值配置表 实体类 + * + * @author BladeX + * @since 2026-04-21 + */ +@Data +@TableName("MES_COST_CALCULATION_OUTPUT") +@Schema(description = "MesCostCalculationOutput对象") +@EqualsAndHashCode(callSuper = true) +public class CostCalculationOutputEntity extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 月份 + */ + @Schema(description = "月份") + private String month; + + /** + * 作业中心id + */ + @Schema(description = "作业中心id") + private Long workCenterId; + + /** + * 作业中心名称 + */ + @Schema(description = "作业中心编码") + private String workCenterCode; + + /** + * 作业中心名称 + */ + @Schema(description = "作业中心名称") + private String workCenterName; + + /** + * 产值 + */ + @Schema(description = "产值") + private Double output; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remarks; + + /** + * 创建人姓名 + */ + @Schema(description = "创建人姓名") + private String createUserName; + + /** + * 更新人姓名 + */ + @Schema(description = "更新人姓名") + private String updateUserName; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostStatisticsEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostStatisticsEntity.java index 97ad66961..0ddc50fe2 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostStatisticsEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostStatisticsEntity.java @@ -133,4 +133,16 @@ public class CostStatisticsEntity extends BaseEntity { @Schema(description = "交付中心") private Long jcId; + /** + * 产值 + */ + @Schema(description = "产值") + private BigDecimal output; + + /** + * 成本费用率 + */ + @Schema(description = "成本费用率") + private BigDecimal costRate; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/vo/CostCalculationEmployeeVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/vo/CostCalculationEmployeeVO.java new file mode 100644 index 000000000..aeaed2425 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/vo/CostCalculationEmployeeVO.java @@ -0,0 +1,46 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.pojo.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.desk.cost.pojo.entity.CostCalculationEmployeeEntity; + +import java.io.Serial; + +/** + * 成本计算物料配置表 视图实体类 + * + * @author BladeX + * @since 2026-04-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class CostCalculationEmployeeVO extends CostCalculationEmployeeEntity { + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/vo/CostCalculationOutputVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/vo/CostCalculationOutputVO.java new file mode 100644 index 000000000..84cb6b64e --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/vo/CostCalculationOutputVO.java @@ -0,0 +1,46 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.pojo.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.desk.cost.pojo.entity.CostCalculationOutputEntity; + +import java.io.Serial; + +/** + * 成本计算物料配置表 视图实体类 + * + * @author BladeX + * @since 2026-04-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class CostCalculationOutputVO extends CostCalculationOutputEntity { + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java new file mode 100644 index 000000000..e41d6b593 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java @@ -0,0 +1,227 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import lombok.AllArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.desk.cost.excel.CostCalculationEmployeeExcel; +import org.springblade.desk.cost.pojo.entity.CostCalculationEmployeeEntity; +import org.springblade.desk.cost.pojo.vo.CostCalculationEmployeeVO; +import org.springblade.desk.cost.service.ICostCalculationEmployeeService; +import org.springblade.desk.cost.wrapper.CostCalculationEmployeeWrapper; +import org.springblade.desk.dashboard.pojo.entity.BsWorkCenterEntity; +import org.springblade.desk.dashboard.service.IBsWorkCenterService; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.entity.UserInfo; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 成本计算物料配置表 控制器 + * + * @author BladeX + * @since 2026-04-21 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/costCalculationEmployee") +@Tag(name = "成本计算物料配置表", description = "成本计算物料配置表接口") +public class CostCalculationEmployeeController extends BladeController { + + private final ICostCalculationEmployeeService costCalculationEmployeeService; + private final IBsWorkCenterService workCenterService; + + + /** + * 成本计算物料配置表 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @Operation(summary = "详情", description = "传入CostCalculationEmployee") + public R detail(CostCalculationEmployeeEntity costCalculationEmployee) { + CostCalculationEmployeeEntity detail = costCalculationEmployeeService.getOne(Condition.getQueryWrapper(costCalculationEmployee)); + return R.data(CostCalculationEmployeeWrapper.build().entityVO(detail)); + } + /** + * 成本计算物料配置表 分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @Operation(summary = "分页", description = "传入CostCalculationEmployee") + public R> list(@Parameter(hidden = true) @RequestParam Map costCalculationEmployee, Query query) { + IPage pages = costCalculationEmployeeService.page(Condition.getPage(query), Condition.getQueryWrapper(costCalculationEmployee, CostCalculationEmployeeEntity.class)); + return R.data(CostCalculationEmployeeWrapper.build().pageVO(pages)); + } + + /** + * 成本计算物料配置表 自定义分页 + */ + @GetMapping("/page") + @ApiOperationSupport(order = 3) + @Operation(summary = "分页", description = "传入CostCalculationEmployee") + public R> page(CostCalculationEmployeeVO costCalculationEmployee, Query query) { + IPage pages = costCalculationEmployeeService.selectCostCalculationEmployeePage(Condition.getPage(query), costCalculationEmployee); + return R.data(pages); + } + + /** + * 成本计算物料配置表 新增 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 4) + @Operation(summary = "新增", description = "传入CostCalculationEmployee") + public R save(@Valid @RequestBody CostCalculationEmployeeEntity costCalculationEmployee) { + return R.status(costCalculationEmployeeService.save(costCalculationEmployee)); + } + + /** + * 成本计算物料配置表 修改 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 5) + @Operation(summary = "修改", description = "传入CostCalculationEmployee") + public R update(@Valid @RequestBody CostCalculationEmployeeEntity costCalculationEmployee) { + return R.status(costCalculationEmployeeService.updateById(costCalculationEmployee)); + } + + /** + * 成本计算物料配置表 新增或修改 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @Operation(summary = "新增或修改", description = "传入CostCalculationEmployee") + public R submit(@Valid @RequestBody CostCalculationEmployeeEntity costCalculationEmployee) { + return R.status(costCalculationEmployeeService.saveOrUpdate(costCalculationEmployee)); + } + + /** + * 成本计算物料配置表 删除 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(costCalculationEmployeeService.deleteLogic(Func.toLongList(ids))); + } + + + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export-costCalculationEmployee") + @ApiOperationSupport(order = 9) + @Operation(summary = "导出数据", description = "传入CostCalculationEmployee") + public void exportCostCalculationEmployee(@Parameter(hidden = true) @RequestParam Map costCalculationEmployee, BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(costCalculationEmployee, CostCalculationEmployeeEntity.class); + //if (!AuthUtil.isAdministrator()) { + // queryWrapper.lambda().eq(CostCalculationEmployee::getTenantId, bladeUser.getTenantId()); + //} + //queryWrapper.lambda().eq(CostCalculationEmployeeEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); + List list = costCalculationEmployeeService.export(queryWrapper); + ExcelUtil.export(response, "成本计算员工配置表数据" + DateUtil.time(), "成本计算员工配置表数据表", list, CostCalculationEmployeeExcel.class); + } + + /** + * 导入模版 + */ + @GetMapping("/importTemplate") + @ApiOperationSupport(order = 9) + @Operation(summary = "导入模版", description = "导入模版") + public void importTemplate(HttpServletResponse response) { + List list = new ArrayList<>(); + ExcelUtil.export(response, "成本计算员工配置表数据" + DateUtil.time(), "成本计算员工配置表数据", list, CostCalculationEmployeeExcel.class); + } + + /** + * [基础分类] 导入Excel + */ + @PostMapping("/import") + @ApiOperationSupport(order = 72) + @Operation(summary = "导入Excel", description = "MultipartFile") + public R importExcel(@RequestParam("file") MultipartFile file) { + List importList = ExcelUtil.read( + file, 0, 1, CostCalculationEmployeeExcel.class + ); + if(CollectionUtils.isEmpty(importList)){ + return R.fail("无法导入空数据!"); + } + List list = new ArrayList<>(); + for(CostCalculationEmployeeExcel employExcel : importList){ + //根据员工编号查询,有则删除 + CostCalculationEmployeeEntity old = costCalculationEmployeeService.getOne(Wrappers.lambdaQuery().eq(CostCalculationEmployeeEntity::getEmployeeCode,employExcel.getEmployeeCode())); + if(old != null){ + costCalculationEmployeeService.deleteLogic(Func.toLongList(old.getId().toString())); + } + BsWorkCenterEntity workCenter = workCenterService.getOne(Wrappers.lambdaQuery().eq(BsWorkCenterEntity::getWcName,employExcel.getWorkCenterName())); + if(workCenter == null){ + return R.fail("作业中心[" + employExcel.getWorkCenterName() + "]不存在!"); + } + UserInfo userInfo = UserCache.getUserByCode(employExcel.getEmployeeCode()); + if(userInfo == null){ + return R.fail("员工工号[" + employExcel.getEmployeeCode() + "]不存在!"); + } + CostCalculationEmployeeEntity entity = new CostCalculationEmployeeEntity(); + BeanUtils.copyProperties(employExcel,entity); + entity.setWorkCenterName(workCenter.getWcName()); + entity.setWorkCenterCode(workCenter.getWcCode()); + entity.setWorkCenterId(workCenter.getId()); + entity.setEmployeeName(userInfo.getUser().getRealName()); + entity.setCreateUserName(UserCache.getUser(Long.valueOf(AuthUtil.getUserId())).getRealName()); + entity.setUpdateUserName(UserCache.getUser(Long.valueOf(AuthUtil.getUserId())).getRealName()); + list.add(entity); + } + if(CollectionUtils.isNotEmpty(list)){ + costCalculationEmployeeService.saveBatch(list); + } + + return R.data("导入成功"); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationOutputController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationOutputController.java new file mode 100644 index 000000000..46f520bfd --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationOutputController.java @@ -0,0 +1,224 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import lombok.AllArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.desk.cost.excel.CostCalculationOutputExcel; +import org.springblade.desk.cost.pojo.entity.CostCalculationOutputEntity; +import org.springblade.desk.cost.pojo.vo.CostCalculationOutputVO; +import org.springblade.desk.cost.service.ICostCalculationOutputService; +import org.springblade.desk.cost.wrapper.CostCalculationOutputWrapper; +import org.springblade.desk.dashboard.pojo.entity.BsWorkCenterEntity; +import org.springblade.desk.dashboard.service.IBsWorkCenterService; +import org.springblade.system.cache.UserCache; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 成本计算物料配置表 控制器 + * + * @author BladeX + * @since 2026-04-21 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/costCalculationOutput") +@Tag(name = "成本计算物料配置表", description = "成本计算物料配置表接口") +public class CostCalculationOutputController extends BladeController { + + private final ICostCalculationOutputService costCalculationOutputService; + private final IBsWorkCenterService workCenterService; + + + /** + * 成本计算物料配置表 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @Operation(summary = "详情", description = "传入CostCalculationOutput") + public R detail(CostCalculationOutputEntity costCalculationOutput) { + CostCalculationOutputEntity detail = costCalculationOutputService.getOne(Condition.getQueryWrapper(costCalculationOutput)); + return R.data(CostCalculationOutputWrapper.build().entityVO(detail)); + } + /** + * 成本计算物料配置表 分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @Operation(summary = "分页", description = "传入CostCalculationOutput") + public R> list(@Parameter(hidden = true) @RequestParam Map costCalculationOutput, Query query) { + IPage pages = costCalculationOutputService.page(Condition.getPage(query), Condition.getQueryWrapper(costCalculationOutput, CostCalculationOutputEntity.class)); + return R.data(CostCalculationOutputWrapper.build().pageVO(pages)); + } + + /** + * 成本计算物料配置表 自定义分页 + */ + @GetMapping("/page") + @ApiOperationSupport(order = 3) + @Operation(summary = "分页", description = "传入CostCalculationOutput") + public R> page(CostCalculationOutputVO costCalculationOutput, Query query) { + IPage pages = costCalculationOutputService.selectCostCalculationOutputPage(Condition.getPage(query), costCalculationOutput); + return R.data(pages); + } + + /** + * 成本计算物料配置表 新增 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 4) + @Operation(summary = "新增", description = "传入CostCalculationOutput") + public R save(@Valid @RequestBody CostCalculationOutputEntity costCalculationOutput) { + return R.status(costCalculationOutputService.save(costCalculationOutput)); + } + + /** + * 成本计算物料配置表 修改 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 5) + @Operation(summary = "修改", description = "传入CostCalculationOutput") + public R update(@Valid @RequestBody CostCalculationOutputEntity costCalculationOutput) { + return R.status(costCalculationOutputService.updateById(costCalculationOutput)); + } + + /** + * 成本计算物料配置表 新增或修改 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @Operation(summary = "新增或修改", description = "传入CostCalculationOutput") + public R submit(@Valid @RequestBody CostCalculationOutputEntity costCalculationOutput) { + return R.status(costCalculationOutputService.saveOrUpdate(costCalculationOutput)); + } + + /** + * 成本计算物料配置表 删除 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(costCalculationOutputService.deleteLogic(Func.toLongList(ids))); + } + + + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export-costCalculationOutput") + @ApiOperationSupport(order = 9) + @Operation(summary = "导出数据", description = "传入CostCalculationOutput") + public void exportCostCalculationOutput(@Parameter(hidden = true) @RequestParam Map costCalculationOutput, BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(costCalculationOutput, CostCalculationOutputEntity.class); + //if (!AuthUtil.isAdministrator()) { + // queryWrapper.lambda().eq(CostCalculationOutput::getTenantId, bladeUser.getTenantId()); + //} + //queryWrapper.lambda().eq(CostCalculationOutputEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); + List list = costCalculationOutputService.export(queryWrapper); + ExcelUtil.export(response, "成本计算产值配置表数据" + DateUtil.time(), "成本计算物料产值表数据表", list, CostCalculationOutputExcel.class); + } + + /** + * 导入模版 + */ + @GetMapping("/importTemplate") + @ApiOperationSupport(order = 9) + @Operation(summary = "导入模版", description = "导入模版") + public void importTemplate(HttpServletResponse response) { + List list = new ArrayList<>(); + ExcelUtil.export(response, "成本计算产值配置表数据" + DateUtil.time(), "成本计算产值配置表数据", list, CostCalculationOutputExcel.class); + } + + /** + * [基础分类] 导入Excel + */ + @PostMapping("/import") + @ApiOperationSupport(order = 72) + @Operation(summary = "导入Excel", description = "MultipartFile") + public R importExcel(@RequestParam("file") MultipartFile file) { + List importList = ExcelUtil.read( + file, 0, 1, CostCalculationOutputExcel.class + ); + if(CollectionUtils.isEmpty(importList)){ + return R.fail("无法导入空数据!"); + } + List list = new ArrayList<>(); + for(CostCalculationOutputExcel outputExcel : importList){ + //根据月份和作业中心查询,有则删除 + CostCalculationOutputEntity old = costCalculationOutputService.getOne(Wrappers.lambdaQuery() + .eq(CostCalculationOutputEntity::getMonth,outputExcel.getMonth()) + .eq(CostCalculationOutputEntity::getWorkCenterName,outputExcel.getWorkCenterName())); + if(old != null){ + costCalculationOutputService.deleteLogic(Func.toLongList(old.getId().toString())); + } + BsWorkCenterEntity workCenter = workCenterService.getOne(Wrappers.lambdaQuery().eq(BsWorkCenterEntity::getWcName,outputExcel.getWorkCenterName())); + if(workCenter == null){ + return R.fail("作业中心[" + outputExcel.getWorkCenterName() + "]不存在!"); + } + + CostCalculationOutputEntity entity = new CostCalculationOutputEntity(); + BeanUtils.copyProperties(outputExcel,entity); + entity.setWorkCenterName(workCenter.getWcName()); + entity.setWorkCenterCode(workCenter.getWcCode()); + entity.setWorkCenterId(workCenter.getId()); + entity.setCreateUserName(UserCache.getUser(Long.valueOf(AuthUtil.getUserId())).getRealName()); + entity.setUpdateUserName(UserCache.getUser(Long.valueOf(AuthUtil.getUserId())).getRealName()); + list.add(entity); + } + if(CollectionUtils.isNotEmpty(list)){ + costCalculationOutputService.saveBatch(list); + } + + return R.data("导入成功"); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/CostCalculationEmployeeExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/CostCalculationEmployeeExcel.java new file mode 100644 index 000000000..eee779e3a --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/CostCalculationEmployeeExcel.java @@ -0,0 +1,70 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.excel; + + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 成本计算物料配置表 Excel实体类 + * + * @author BladeX + * @since 2026-04-21 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class CostCalculationEmployeeExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * 物料编码 + */ + @ColumnWidth(20) + @ExcelProperty("作业中心名称") + private String workCenterName; + + /** + * 物料编码 + */ + @ColumnWidth(20) + @ExcelProperty("人员工号") + private String employeeCode; + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/CostCalculationOutputExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/CostCalculationOutputExcel.java new file mode 100644 index 000000000..d16e34e83 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/CostCalculationOutputExcel.java @@ -0,0 +1,76 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.excel; + + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 成本计算物料配置表 Excel实体类 + * + * @author BladeX + * @since 2026-04-21 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class CostCalculationOutputExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 物料编码 + */ + @ColumnWidth(20) + @ExcelProperty("月份") + private String month; + + /** + * 物料编码 + */ + @ColumnWidth(20) + @ExcelProperty("作业中心名称") + private String workCenterName; + + /** + * 物料编码 + */ + @ColumnWidth(20) + @ExcelProperty("产值") + private Double output; + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.java new file mode 100644 index 000000000..45c0aeff0 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.java @@ -0,0 +1,64 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.springblade.desk.cost.excel.CostCalculationEmployeeExcel; +import org.springblade.desk.cost.pojo.entity.CostCalculationEmployeeEntity; +import org.springblade.desk.cost.pojo.vo.CostCalculationEmployeeVO; + +import java.util.List; + +/** + * 成本计算物料配置表 Mapper 接口 + * + * @author BladeX + * @since 2026-04-21 + */ +public interface CostCalculationEmployeeMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param CostCalculationEmployee 查询参数 + * @return List + */ + List selectCostCalculationEmployeePage(IPage page, CostCalculationEmployeeVO CostCalculationEmployee); + + + /** + * 获取导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List export(@Param("ew") Wrapper queryWrapper); + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.xml new file mode 100644 index 000000000..aa260ae81 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationOutputMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationOutputMapper.java new file mode 100644 index 000000000..64c570fd2 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationOutputMapper.java @@ -0,0 +1,64 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.cost.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.springblade.desk.cost.excel.CostCalculationOutputExcel; +import org.springblade.desk.cost.pojo.entity.CostCalculationOutputEntity; +import org.springblade.desk.cost.pojo.vo.CostCalculationOutputVO; + +import java.util.List; + +/** + * 成本计算物料配置表 Mapper 接口 + * + * @author BladeX + * @since 2026-04-21 + */ +public interface CostCalculationOutputMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param CostCalculationOutput 查询参数 + * @return List + */ + List selectCostCalculationOutputPage(IPage page, CostCalculationOutputVO CostCalculationOutput); + + + /** + * 获取导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List export(@Param("ew") Wrapper queryWrapper); + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationOutputMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationOutputMapper.xml new file mode 100644 index 000000000..5a32dad3f --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationOutputMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.java index efd4e3548..d967831c7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.java @@ -74,4 +74,8 @@ public interface CostStatisticsMapper extends BaseMapper { List exportWorkCenterMaterialCost(@Param("workCenterId")Long workCenterId, @Param("month")String month); List exportAssistantMaterialCost(@Param("month")String month); + + BigDecimal getWorkCenterMaterialCostByUser(@Param("userCode")String userCode, @Param("month")String month); + + BigDecimal getAssistantMaterialCostByUser(@Param("userCode")String userCode,@Param("month")String month); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml index 3853cbb6a..bf4a32b96 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml @@ -71,6 +71,20 @@ AND a.GOODS_ID NOT IN ( SELECT id FROM ST_GOODS WHERE GOODS_CODE IN ( SELECT GOODS_CODE FROM MES_COST_CALCULATION_GOODS ) ) + + + @@ -104,7 +107,10 @@ ST_STOCK_INOUT_RECORD a left join blade_user b on a.user_id = b.id WHERE a.is_deleted = 0 - AND b.code != #{userCode} + AND b.code not in + + #{userCode} + AND a.IN_OUT_TYPE = 1 AND to_char( IN_OUT_DATE, 'yyyy-MM' ) = #{month} AND a.GOODS_ID NOT IN ( SELECT id FROM ST_GOODS WHERE GOODS_CODE IN ( SELECT GOODS_CODE FROM MES_COST_CALCULATION_GOODS ) ) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/impl/CostStatisticsServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/impl/CostStatisticsServiceImpl.java index 0f136e0ea..d2b618dd1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/impl/CostStatisticsServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/impl/CostStatisticsServiceImpl.java @@ -117,8 +117,8 @@ public class CostStatisticsServiceImpl extends BaseServiceImpllambdaQuery().eq(CostCalculationEmployeeEntity::getWorkCenterId,workCenter.getId())); - if(costCalculationEmployee == null){ + List costCalculationEmployeeList = costCalculationEmployeeService.list(Wrappers.lambdaQuery().eq(CostCalculationEmployeeEntity::getWorkCenterId,workCenter.getId())); + if(CollectionUtils.isEmpty(costCalculationEmployeeList)){ //作业中心材料费用(剔除成本计算维护的物料) workCenterMaterialCost = baseMapper.getWorkCenterMaterialCost(workCenter.getId(),month); //费用科目中维护的作业中心材料费用 @@ -130,11 +130,12 @@ public class CostStatisticsServiceImpl extends BaseServiceImpl userCodeList = costCalculationEmployeeList.stream().map(CostCalculationEmployeeEntity::getEmployeeCode).collect(Collectors.toList()); //作业中心材料费用(剔除成本计算维护的物料) - workCenterMaterialCost = baseMapper.getWorkCenterMaterialCostByUser(costCalculationEmployee.getEmployeeCode(),month); + workCenterMaterialCost = baseMapper.getWorkCenterMaterialCostByUser(userCodeList,month); //费用科目中维护的作业中心材料费用 erpWorkCenterMaterialCost = getMaterialCost(subjectFeeList,workCenter,month); - assistantMaterialCost = baseMapper.getAssistantMaterialCostByUser(costCalculationEmployee.getEmployeeCode(),month); + assistantMaterialCost = baseMapper.getAssistantMaterialCostByUser(userCodeList,month); //材料费用 materialCost = workCenterMaterialCost.add(assistantMaterialCost).add(erpWorkCenterMaterialCost); } From 81bc93a329c400054c058ddd4b3e60418131509e Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Mon, 1 Jun 2026 18:33:28 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/mapper/StOtherReceiptRecordMapper.java | 4 ++++ .../wms/mapper/StOtherReceiptRecordMapper.xml | 12 ++++++++++++ .../impl/StGlassCakeOutServiceImpl.java | 18 +++++++++++++++++- .../impl/StGraphiteMoldOutServiceImpl.java | 17 ++++++++++++++++- .../impl/StOtherReceiptRecordServiceImpl.java | 7 +++++++ 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StOtherReceiptRecordMapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StOtherReceiptRecordMapper.java index 195ce21c7..fd29e76e0 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StOtherReceiptRecordMapper.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StOtherReceiptRecordMapper.java @@ -46,5 +46,9 @@ public interface StOtherReceiptRecordMapper extends BaseMapper + + + UPDATE MES_WORK_ORDER + SET batch_no = #{batchNo} + WHERE ID = #{id} + + + + UPDATE MES_YIELD_ORDER + SET batch_no = #{batchNo} + WHERE ID = #{id} + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java index 01a6e65fc..1780f5fd3 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java @@ -1,6 +1,8 @@ package org.springblade.wms.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -16,6 +18,7 @@ import org.springblade.wms.excel.StGlassCakeOutExcel; import org.springblade.wms.mapper.StGlassCakeOutMapper; import org.springblade.wms.mapper.StOtherReceiptRecordMapper; import org.springblade.wms.mapper.StRealtimeStockMapper; +import org.springblade.wms.mapper.StStockInoutRecordMapper; import org.springblade.wms.pojo.dto.StGlassCakeOutDTO; import org.springblade.wms.pojo.entity.*; import org.springblade.wms.pojo.vo.StGlassCakeOutVO; @@ -43,6 +46,8 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl preOutStockList = new ArrayList<>(); + String datePrefix = DateUtil.format(new Date(), "yyyyMMdd"); + // 2. 当天最大序号 + String maxCode = stStockInoutRecordMapper.getMaxCheckCode(datePrefix); + int lastNum = 0; + if (StrUtil.isNotBlank(maxCode)) { + String number = maxCode.substring(datePrefix.length()); + lastNum = Integer.parseInt(number); + } + // 4. 遍历每个玻璃饼,单独匹配库存+判断是否生成预出库 if (!CollectionUtils.isEmpty(glassCakePartList)) { for (DsPartEntity glassCake : glassCakePartList) { @@ -269,7 +283,9 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl Date: Tue, 2 Jun 2026 09:55:33 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/cost/controller/CostCalculationEmployeeController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java index e41d6b593..8fc7d2ef2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java @@ -196,7 +196,7 @@ public class CostCalculationEmployeeController extends BladeController { List list = new ArrayList<>(); for(CostCalculationEmployeeExcel employExcel : importList){ //根据员工编号查询,有则删除 - CostCalculationEmployeeEntity old = costCalculationEmployeeService.getOne(Wrappers.lambdaQuery().eq(CostCalculationEmployeeEntity::getEmployeeCode,employExcel.getEmployeeCode())); + CostCalculationEmployeeEntity old = costCalculationEmployeeService.getOne(Wrappers.lambdaQuery().eq(CostCalculationEmployeeEntity::getEmployeeCode,employExcel.getEmployeeCode()).eq(CostCalculationEmployeeEntity::getWorkCenterName,employExcel.getWorkCenterName())); if(old != null){ costCalculationEmployeeService.deleteLogic(Func.toLongList(old.getId().toString())); } From 72a67e2d1c2bf255be5107f9ac8f5e462116f033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Tue, 2 Jun 2026 10:05:19 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E6=8A=A5=E5=B7=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/service/impl/WorkOrderServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 3e4683967..4c62270ed 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -2037,7 +2037,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl Date: Tue, 2 Jun 2026 10:15:19 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cost/controller/CostCalculationEmployeeController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java index 8fc7d2ef2..50641c473 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java @@ -195,8 +195,8 @@ public class CostCalculationEmployeeController extends BladeController { } List list = new ArrayList<>(); for(CostCalculationEmployeeExcel employExcel : importList){ - //根据员工编号查询,有则删除 - CostCalculationEmployeeEntity old = costCalculationEmployeeService.getOne(Wrappers.lambdaQuery().eq(CostCalculationEmployeeEntity::getEmployeeCode,employExcel.getEmployeeCode()).eq(CostCalculationEmployeeEntity::getWorkCenterName,employExcel.getWorkCenterName())); + //根据作业中心查询,有则删除 + CostCalculationEmployeeEntity old = costCalculationEmployeeService.getOne(Wrappers.lambdaQuery().eq(CostCalculationEmployeeEntity::getWorkCenterName,employExcel.getWorkCenterName())); if(old != null){ costCalculationEmployeeService.deleteLogic(Func.toLongList(old.getId().toString())); } From ea5001f61efd718a463b6671fc3bb32bfac0aa66 Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Tue, 2 Jun 2026 11:47:52 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/BsSalaryCalculationExcel.java | 21 +++++++---- .../pojo/vo/BsSalaryCalculationVO.java | 35 +++++++++++++++---- .../desk/produce/mapper/WorkPlanMapper.xml | 26 ++++++++++++-- 3 files changed, 67 insertions(+), 15 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/excel/BsSalaryCalculationExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/excel/BsSalaryCalculationExcel.java index 84f449eb9..8d715e55f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/excel/BsSalaryCalculationExcel.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/excel/BsSalaryCalculationExcel.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.HeadRowHeight; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; + @Data @ColumnWidth(25) @HeadRowHeight(20) @@ -83,25 +85,25 @@ public class BsSalaryCalculationExcel implements Serializable { private String ppsName; /** - * 定额工时 + * 额定工时 */ @ColumnWidth(20) - @ExcelProperty("定额工时") - private String hourQuota; + @ExcelProperty("额定工时") + private BigDecimal standardTime; /** * 准备工时 */ @ColumnWidth(20) @ExcelProperty("准备工时") - private String hourPrepar; + private BigDecimal prepareTime; /** * 工时额定单位 */ @ColumnWidth(20) @ExcelProperty("工时额定单位") - private String hqUnit; + private String hourTypeValue; /** * 报工数 @@ -115,7 +117,14 @@ public class BsSalaryCalculationExcel implements Serializable { */ @ColumnWidth(20) @ExcelProperty("总工时") - private String hourTotal; + private BigDecimal totalHour; + + /** + * 实际总工时 + */ + @ColumnWidth(20) + @ExcelProperty("实际总工时") + private BigDecimal hourQuota; /** * 责任人 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/pojo/vo/BsSalaryCalculationVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/pojo/vo/BsSalaryCalculationVO.java index 5414e8d00..f4438d7fb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/pojo/vo/BsSalaryCalculationVO.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/pojo/vo/BsSalaryCalculationVO.java @@ -3,6 +3,7 @@ package org.springblade.desk.efficiency.pojo.vo; import lombok.Data; import java.io.Serial; +import java.math.BigDecimal; @Data public class BsSalaryCalculationVO { @@ -56,9 +57,9 @@ public class BsSalaryCalculationVO { private String ppsName; /** - * 定额工时 + * 工时定额 */ - private String hourQuota; + private BigDecimal hourQuota; /** * 准备工时 @@ -75,11 +76,6 @@ public class BsSalaryCalculationVO { */ private String workQty; - /** - * 总工时 - */ - private String hourTotal; - /** * 责任人 */ @@ -169,4 +165,29 @@ public class BsSalaryCalculationVO { */ private boolean isAsc; + /** + * 额定工时 + */ + private BigDecimal standardTime; + + /** + * 准备工时 + */ + private BigDecimal prepareTime; + + /** + * 工时类型 0-按件 1-按订单 + */ + private String hourType; + + /** + * 工时类型 + */ + private String hourTypeValue; + + /** + * 总工时 + */ + private BigDecimal totalHour; + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml index bc5418bee..e62c5afd9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml @@ -490,7 +490,18 @@ CASE WHEN a.BASE_AMOUNT IS NULL AND a.SUBSIDY_AMOUNT IS NULL THEN NULL ELSE NVL(a.BASE_AMOUNT, 0) + NVL(a.SUBSIDY_AMOUNT, 0) - END AS totalAmount + END AS totalAmount, + a.STANDARD_TIME as standardTime, + a.PREPARE_TIME as prepareTime, + a.HOUR_TYPE as hourType, + CASE + WHEN a.HOUR_TYPE = '0' THEN a.WORK_QTY * a.STANDARD_TIME + PREPARE_TIME + WHEN a.HOUR_TYPE = '1' THEN a.STANDARD_TIME + PREPARE_TIME + ELSE NULL END as totalHour, + CASE + WHEN a.HOUR_TYPE = '0' THEN '按件' + WHEN a.HOUR_TYPE = '1' THEN '按订单' + ELSE '' END as hourTypeValue FROM MES_WORK_PLAN a INNER JOIN BS_PROCESS_SET b ON a.PPS_ID = b.ID AND b.IS_DELETED = 0 INNER JOIN MES_MAKE_REC c ON a.ID = c.WP_ID AND c.IS_DELETED = 0 @@ -640,7 +651,18 @@ CASE WHEN a.BASE_AMOUNT IS NULL AND a.SUBSIDY_AMOUNT IS NULL THEN NULL ELSE NVL(a.BASE_AMOUNT, 0) + NVL(a.SUBSIDY_AMOUNT, 0) - END AS totalAmount + END AS totalAmount, + a.STANDARD_TIME as standardTime, + a.PREPARE_TIME as prepareTime, + a.HOUR_TYPE as hourType, + CASE + WHEN a.HOUR_TYPE = '0' THEN a.WORK_QTY * a.STANDARD_TIME + PREPARE_TIME + WHEN a.HOUR_TYPE = '1' THEN a.STANDARD_TIME + PREPARE_TIME + ELSE NULL END as totalHour, + CASE + WHEN a.HOUR_TYPE = '0' THEN '按件' + WHEN a.HOUR_TYPE = '1' THEN '按订单' + ELSE '' END as hourTypeValue FROM MES_WORK_PLAN a INNER JOIN BS_PROCESS_SET b ON a.PPS_ID = b.ID AND b.IS_DELETED = 0 INNER JOIN MES_MAKE_REC c ON a.ID = c.WP_ID AND c.IS_DELETED = 0 From 321d451173fe35edbeb1429c54109ae27d76e75d Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Tue, 2 Jun 2026 11:53:02 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/cost/mapper/CostCalculationEmployeeMapper.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.xml index aa260ae81..7508b941d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostCalculationEmployeeMapper.xml @@ -22,10 +22,17 @@ From 4a8efb3417603b328fc8eda7b11d920977980f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Tue, 2 Jun 2026 13:34:53 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=86=E6=B4=BE?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/YieldOrderCraftServiceImpl.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java index 783005ac5..11d1cbd57 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java @@ -413,7 +413,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpllambdaQuery().apply("INSTR(',' || CRAFT_ABILITY_ID || ',', ',' || {0} || ',') > 0", orderCraft.getCaId())); + if (workCenter == null) { + throw new ServiceException("工艺" + orderCraft.getCaId() + "未查询到对应作业中心"); + } + orderCraft.setWorkCenterId(workCenter.getId()); + orderCraft.setIsOutsource(Boolean.FALSE); + } else { + orderCraft.setOcId(oemCustomer.getId()); + orderCraft.setIsOutsource(Boolean.TRUE); + } } // 更新主工序工艺能力日产能信息 From 99b8f8adef73d164def565984fb8370026b6e56a Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Tue, 2 Jun 2026 14:01:46 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CostCalculationEmployeeController.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java index 50641c473..17178d475 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostCalculationEmployeeController.java @@ -38,6 +38,7 @@ import lombok.AllArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -62,6 +63,7 @@ import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 成本计算物料配置表 控制器 @@ -196,9 +198,10 @@ public class CostCalculationEmployeeController extends BladeController { List list = new ArrayList<>(); for(CostCalculationEmployeeExcel employExcel : importList){ //根据作业中心查询,有则删除 - CostCalculationEmployeeEntity old = costCalculationEmployeeService.getOne(Wrappers.lambdaQuery().eq(CostCalculationEmployeeEntity::getWorkCenterName,employExcel.getWorkCenterName())); - if(old != null){ - costCalculationEmployeeService.deleteLogic(Func.toLongList(old.getId().toString())); + List oldList = costCalculationEmployeeService.list(Wrappers.lambdaQuery().eq(CostCalculationEmployeeEntity::getWorkCenterName,employExcel.getWorkCenterName())); + if(CollectionUtils.isNotEmpty(oldList)){ + List idList = oldList.stream().map(BaseEntity::getId).collect(Collectors.toList()); + costCalculationEmployeeService.deleteLogic(idList); } BsWorkCenterEntity workCenter = workCenterService.getOne(Wrappers.lambdaQuery().eq(BsWorkCenterEntity::getWcName,employExcel.getWorkCenterName())); if(workCenter == null){ From 66041104388e17ad7da4294f027d2be108920957 Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Tue, 2 Jun 2026 14:35:44 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=B7=A5=E5=BA=8F?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OemStandardProcessController.java | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStandardProcessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStandardProcessController.java index 4fc5428e9..ad3e64077 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStandardProcessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStandardProcessController.java @@ -1,5 +1,6 @@ package org.springblade.desk.oem.controller; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Operation; @@ -23,7 +24,6 @@ import org.springblade.desk.oem.service.IOemStandardProcessService; import org.springframework.beans.BeanUtils; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; -import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -73,7 +73,7 @@ public class OemStandardProcessController { wrapper.ne(OemStandardProcessEntity::getId, oemStandardProcessEntity.getId()); } List list = oemStandardProcessService.list(wrapper); - if (!CollectionUtils.isEmpty(list)) { + if (CollectionUtils.isNotEmpty(list)) { return R.fail("数据已存在"); } } @@ -91,6 +91,7 @@ public class OemStandardProcessController { /** * 外协标准工序代码 下载模板 + * * @return */ @GetMapping("/download-excel-template") @@ -101,6 +102,7 @@ public class OemStandardProcessController { /** * 外协标准工序代码 导入Excel + * * @param file * @return */ @@ -120,10 +122,10 @@ public class OemStandardProcessController { if (StringUtils.isEmpty(row.getProcessName())) { return R.fail(rowNum + "行工序未填写"); } - if(StringUtils.isEmpty(row.getStandardProcessCode())){ + if (StringUtils.isEmpty(row.getStandardProcessCode())) { return R.fail(rowNum + "行标准工序代码未填写"); } - String uniqueStr = StringUtils.joinWith("|", row.getProcessName(), row.getPlate(), row.getPlateThickness(), row.getPartName()); + String uniqueStr = StringUtils.joinWith("|", String.valueOf(row.getProcessName()), String.valueOf(row.getPlate()), String.valueOf(row.getPlateThickness()), String.valueOf(row.getPartName())); if (!uniqueSet.add(uniqueStr)) { return R.fail(rowNum + "行在Excel中重复"); } @@ -131,8 +133,25 @@ public class OemStandardProcessController { if (processSet == null) { return R.fail(rowNum + "行错误,系统无此工序"); } - OemStandardProcessEntity exist = oemStandardProcessService.getOne(new LambdaQueryWrapper().eq(OemStandardProcessEntity::getProcessId, processSet.getId()).eq(OemStandardProcessEntity::getPlate, row.getPlate()).eq(OemStandardProcessEntity::getPlateThickness, row.getPlateThickness()).eq(OemStandardProcessEntity::getPartName, row.getPartName())); - if (exist != null) { + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(OemStandardProcessEntity::getProcessId, processSet.getId()); + if (StringUtils.isEmpty(row.getPlate())) { + qw.isNull(OemStandardProcessEntity::getPlate); + } else { + qw.eq(OemStandardProcessEntity::getPlate, row.getPlate()); + } + if (StringUtils.isEmpty(row.getPlateThickness())) { + qw.isNull(OemStandardProcessEntity::getPlateThickness); + } else { + qw.eq(OemStandardProcessEntity::getPlateThickness, row.getPlateThickness()); + } + if (StringUtils.isEmpty(row.getPartName())) { + qw.isNull(OemStandardProcessEntity::getPartName); + } else { + qw.eq(OemStandardProcessEntity::getPartName, row.getPartName()); + } + List exist = oemStandardProcessService.list(qw); + if (CollectionUtils.isNotEmpty(exist)) { return R.fail(rowNum + "行错误,数据已存在"); } OemStandardProcessEntity entity = new OemStandardProcessEntity(); From 25fff58fdfe9ba15d683bde3a026f2ae01d05679 Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Tue, 2 Jun 2026 15:27:31 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=B7=A5=E5=BA=8F?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/entity/OemStandardProcessEntity.java | 6 ++-- .../oem/pojo/vo/OemStandardProcessVO.java | 3 -- .../OemStandardProcessController.java | 29 ++++++++++++++----- .../oem/mapper/OemStandardProcessMapper.xml | 6 ++-- .../service/impl/OemStatementServiceImpl.java | 28 +++++++++--------- 5 files changed, 41 insertions(+), 31 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStandardProcessEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStandardProcessEntity.java index 57117a6b3..62829636c 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStandardProcessEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStandardProcessEntity.java @@ -24,10 +24,10 @@ public class OemStandardProcessEntity extends BaseEntity { private static final long serialVersionUID = 1L; /** - * 工序ID + * 工序名称 */ - @Schema(description = "工序ID") - private Long processId; + @Schema(description = "工序名称") + private String processName; /** * 镀种 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemStandardProcessVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemStandardProcessVO.java index 1638eb4fe..9620581ab 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemStandardProcessVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemStandardProcessVO.java @@ -20,9 +20,6 @@ public class OemStandardProcessVO extends OemStandardProcessEntity { @Serial private static final long serialVersionUID = 1L; - @Schema(description = "工序名称") - private String processName; - @Schema(description = "维护人") private String updateUserName; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStandardProcessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStandardProcessController.java index ad3e64077..42d09e04c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStandardProcessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStandardProcessController.java @@ -68,11 +68,27 @@ public class OemStandardProcessController { @Operation(summary = "新增或修改", description = "传入bsEfficiencyTempList") public R submit(@Valid @RequestBody List oemStandardProcessList) { for (OemStandardProcessEntity oemStandardProcessEntity : oemStandardProcessList) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper().eq(OemStandardProcessEntity::getProcessId, oemStandardProcessEntity.getProcessId()).eq(OemStandardProcessEntity::getPlate, oemStandardProcessEntity.getPlate()).eq(OemStandardProcessEntity::getPlateThickness, oemStandardProcessEntity.getPlateThickness()).eq(OemStandardProcessEntity::getPartName, oemStandardProcessEntity.getPartName()); + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(OemStandardProcessEntity::getProcessName, oemStandardProcessEntity.getProcessName()); + if (StringUtils.isEmpty(oemStandardProcessEntity.getPlate())) { + qw.isNull(OemStandardProcessEntity::getPlate); + } else { + qw.eq(OemStandardProcessEntity::getPlate, oemStandardProcessEntity.getPlate()); + } + if (StringUtils.isEmpty(oemStandardProcessEntity.getPlateThickness())) { + qw.isNull(OemStandardProcessEntity::getPlateThickness); + } else { + qw.eq(OemStandardProcessEntity::getPlateThickness, oemStandardProcessEntity.getPlateThickness()); + } + if (StringUtils.isEmpty(oemStandardProcessEntity.getPartName())) { + qw.isNull(OemStandardProcessEntity::getPartName); + } else { + qw.eq(OemStandardProcessEntity::getPartName, oemStandardProcessEntity.getPartName()); + } if (oemStandardProcessEntity.getId() != null) { - wrapper.ne(OemStandardProcessEntity::getId, oemStandardProcessEntity.getId()); + qw.ne(OemStandardProcessEntity::getId, oemStandardProcessEntity.getId()); } - List list = oemStandardProcessService.list(wrapper); + List list = oemStandardProcessService.list(qw); if (CollectionUtils.isNotEmpty(list)) { return R.fail("数据已存在"); } @@ -129,12 +145,12 @@ public class OemStandardProcessController { if (!uniqueSet.add(uniqueStr)) { return R.fail(rowNum + "行在Excel中重复"); } - BsProcessSetEntity processSet = bsProcessSetService.getOne(new LambdaQueryWrapper().eq(BsProcessSetEntity::getName, row.getProcessName())); - if (processSet == null) { + List processSet = bsProcessSetService.list(new LambdaQueryWrapper().eq(BsProcessSetEntity::getName, row.getProcessName())); + if (CollectionUtils.isEmpty(processSet)) { return R.fail(rowNum + "行错误,系统无此工序"); } LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); - qw.eq(OemStandardProcessEntity::getProcessId, processSet.getId()); + qw.eq(OemStandardProcessEntity::getProcessName, row.getProcessName()); if (StringUtils.isEmpty(row.getPlate())) { qw.isNull(OemStandardProcessEntity::getPlate); } else { @@ -156,7 +172,6 @@ public class OemStandardProcessController { } OemStandardProcessEntity entity = new OemStandardProcessEntity(); BeanUtils.copyProperties(row, entity); - entity.setProcessId(processSet.getId()); entityList.add(entity); } return R.status(oemStandardProcessService.saveBatch(entityList)); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStandardProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStandardProcessMapper.xml index 4cdb8d806..1d2cd6595 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStandardProcessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStandardProcessMapper.xml @@ -5,7 +5,7 @@ - + @@ -24,15 +24,13 @@