From d98099c16ee516c580eefbdbb94813f9d498638b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 29 Nov 2024 18:49:23 +0800 Subject: [PATCH] =?UTF-8?q?bugfix:=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E7=8E=B0?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/technology/api/CostConfigApi.java | 3 +- .../pojo/entity/PaintCostConfigEntity.java | 6 +++- .../pojo/entity/SteelsCostConfigEntity.java | 6 +++- .../pojo/entity/VirtualWorkingEntity.java | 6 +++- .../pojo/entity/WorkingTypeEntity.java | 6 +++- .../pojo/query/PaintCostConfig.java | 5 +++ .../pojo/query/SteelsCostConfig.java | 5 +++ .../technology/pojo/query/VirtualWorking.java | 3 ++ .../pojo/query/WorkingTypeQuery.java | 24 +++++++++++++ .../pojo/vo/MonthlyWorkingHoursConfigVO.java | 5 +++ .../technology/pojo/vo/PaintCostConfigVO.java | 3 ++ .../pojo/vo/SteelsCostConfigVO.java | 3 ++ .../pojo/vo/VirtualWorkingItemVO.java | 9 +++++ .../technology/pojo/vo/WorkingTypeVO.java | 3 ++ .../technology/service/CostConfigService.java | 28 ++++++++++----- .../service/PaintCostConfigService.java | 35 +++++++++++------- .../service/SteelsCostConfigService.java | 35 +++++++++++------- .../service/VirtualWorkingService.java | 33 +++++++++++------ .../service/WorkingTypeService.java | 36 +++++++++---------- .../technology/util/BigDecimalUtil.java | 2 +- .../src/test/java/BigDecimalUtilTest.java | 20 +++++++++++ 21 files changed, 207 insertions(+), 69 deletions(-) create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/WorkingTypeQuery.java create mode 100644 nflg_project_dev/nflg-technology/src/test/java/BigDecimalUtilTest.java diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/CostConfigApi.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/CostConfigApi.java index 66033092..d6f248cf 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/CostConfigApi.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/CostConfigApi.java @@ -4,6 +4,7 @@ import com.nflg.product.base.core.api.BaseApi; import com.nflg.product.technology.pojo.query.CostConfigQuery; import com.nflg.product.technology.pojo.query.MonthlyWorkingHoursConfigQuery; import com.nflg.product.technology.pojo.query.VirtualWorkingSaveQuery; +import com.nflg.product.technology.pojo.query.WorkingTypeQuery; import com.nflg.product.technology.pojo.vo.CostConfigVO; import com.nflg.product.technology.pojo.vo.MonthlyWorkingHoursConfigVO; import com.nflg.product.technology.pojo.vo.VirtualWorkingVO; @@ -41,7 +42,7 @@ public class CostConfigApi extends BaseApi { @PostMapping("saveWorkingTypes") @ApiOperation("保存工时类型") - public ResultVO saveVirtualWorking(@RequestBody List types) { + public ResultVO saveVirtualWorking(@RequestBody List types) { costConfigService.saveWorkingTypes(types); return ResultVO.success(); } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/PaintCostConfigEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/PaintCostConfigEntity.java index 35c14b03..dd9af7ee 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/PaintCostConfigEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/PaintCostConfigEntity.java @@ -18,7 +18,11 @@ import java.math.BigDecimal; @TableName(value = "t_technology_paint_price_config") public class PaintCostConfigEntity extends EntityBase implements Serializable { - @TableId(value = "name", type = IdType.INPUT) + @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty(value = "主键行id") + private Integer id; + + @TableField(value = "name") @ApiModelProperty(value = "标签名称") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/SteelsCostConfigEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/SteelsCostConfigEntity.java index a87e8d40..cbdb04c9 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/SteelsCostConfigEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/SteelsCostConfigEntity.java @@ -18,7 +18,11 @@ import java.math.BigDecimal; @TableName(value = "t_technology_steels_cost_config") public class SteelsCostConfigEntity extends EntityBase implements Serializable { - @TableId(value = "name", type = IdType.INPUT) + @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty(value = "主键行id") + private Integer id; + + @TableField(value = "name") @ApiModelProperty(value = "分类名称") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/VirtualWorkingEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/VirtualWorkingEntity.java index 1fc05ef6..e4dde8aa 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/VirtualWorkingEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/VirtualWorkingEntity.java @@ -22,7 +22,11 @@ import java.math.BigDecimal; @TableName(value = "t_technology_virtual_working") public class VirtualWorkingEntity extends EntityBase implements Serializable { - @TableId(value = "name", type = IdType.INPUT) + @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty(value = "主键行id") + private Integer id; + + @TableField(value = "name") @ApiModelProperty(value = "工时类型") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/WorkingTypeEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/WorkingTypeEntity.java index 6a862775..eb302267 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/WorkingTypeEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/WorkingTypeEntity.java @@ -18,7 +18,11 @@ import java.time.LocalDateTime; @TableName(value = "t_technology_working_type") public class WorkingTypeEntity implements Serializable { - @TableId(value = "name", type = IdType.INPUT) + @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty(value = "主键行id") + private Integer id; + + @TableField(value = "name") @ApiModelProperty(value = "名称") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/PaintCostConfig.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/PaintCostConfig.java index 729d64ac..6bba0535 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/PaintCostConfig.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/PaintCostConfig.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; @@ -19,8 +20,12 @@ import java.math.BigDecimal; @ApiModel(value = "com-nflg-product-technology-pojo-query-PaintCostConfig") public class PaintCostConfig implements Serializable { + @ApiModelProperty(value = "主键行id") + private Integer id; + @ApiModelProperty("标签名称") @NotBlank(message = "标签名称不能为空") + @Length(max = 10, message = "标签名称不能超过10个字") private String name; @ApiModelProperty("价格") diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/SteelsCostConfig.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/SteelsCostConfig.java index 9f7c4ac2..f4de81ed 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/SteelsCostConfig.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/SteelsCostConfig.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; @@ -19,8 +20,12 @@ import java.math.BigDecimal; @ApiModel(value = "com-nflg-product-technology-pojo-query-SteelsCostConfig") public class SteelsCostConfig implements Serializable { + @ApiModelProperty(value = "主键行id") + private Integer id; + @ApiModelProperty("分类名称") @NotBlank(message = "分类名称不能为空") + @Length(max = 10, message = "分类名称不能超过10个字") private String name; @ApiModelProperty("钢材价格") diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/VirtualWorking.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/VirtualWorking.java index 89489ef4..949ec315 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/VirtualWorking.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/VirtualWorking.java @@ -20,6 +20,9 @@ import java.math.BigDecimal; @ApiModel(value = "com-nflg-product-technology-pojo-query-VirtualWorking") public class VirtualWorking implements Serializable { + @ApiModelProperty(value = "主键行id") + private Integer id; + @ApiModelProperty("工时类型") @NotBlank(message = "工时类型不能为空") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/WorkingTypeQuery.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/WorkingTypeQuery.java new file mode 100644 index 00000000..61f0fb77 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/WorkingTypeQuery.java @@ -0,0 +1,24 @@ +package com.nflg.product.technology.pojo.query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +@Data +@Accessors(chain = true) +@ApiModel(value = "com-nflg-product-technology-pojo-query-WorkingTypeQuery") +public class WorkingTypeQuery implements Serializable { + + @ApiModelProperty(value = "主键行id") + private Integer id; + + @ApiModelProperty("名称") + @NotBlank(message = "名称不能为空") + @Length(max = 10, message = "名称不能超过10个字") + private String name; +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/MonthlyWorkingHoursConfigVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/MonthlyWorkingHoursConfigVO.java index 3710be2d..f0cc4142 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/MonthlyWorkingHoursConfigVO.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/MonthlyWorkingHoursConfigVO.java @@ -1,5 +1,8 @@ package com.nflg.product.technology.pojo.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nflg.product.base.core.config.BigDecimalSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -15,6 +18,8 @@ import java.util.Objects; public class MonthlyWorkingHoursConfigVO implements Serializable { @ApiModelProperty("每月理论满负荷工时") + @JsonFormat(pattern = "#.####") + @JsonSerialize(using = BigDecimalSerializer.class) private BigDecimal monthlyWorkingHoursCost; public BigDecimal getMonthlyWorkingHoursCost() { diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/PaintCostConfigVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/PaintCostConfigVO.java index 0a631301..b3d8e221 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/PaintCostConfigVO.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/PaintCostConfigVO.java @@ -18,6 +18,9 @@ import java.math.BigDecimal; @ApiModel(value = "com-nflg-product-technology-pojo-vo-PaintCostConfigVO") public class PaintCostConfigVO extends EntityBase implements Serializable { + @ApiModelProperty(value = "主键行id") + private Integer id; + @ApiModelProperty("标签名称") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/SteelsCostConfigVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/SteelsCostConfigVO.java index a20157c9..af0955b2 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/SteelsCostConfigVO.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/SteelsCostConfigVO.java @@ -18,6 +18,9 @@ import java.math.BigDecimal; @ApiModel(value = "com-nflg-product-technology-pojo-vo-SteelsCostConfigVO") public class SteelsCostConfigVO extends EntityBase implements Serializable { + @ApiModelProperty(value = "主键行id") + private Integer id; + @ApiModelProperty("分类名称") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/VirtualWorkingItemVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/VirtualWorkingItemVO.java index 920d688e..2478a7d9 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/VirtualWorkingItemVO.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/VirtualWorkingItemVO.java @@ -1,6 +1,9 @@ package com.nflg.product.technology.pojo.vo; import cn.hutool.core.util.NumberUtil; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nflg.product.base.core.config.BigDecimalSerializer; import com.nflg.product.technology.pojo.query.VirtualWorking; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -21,6 +24,8 @@ import java.time.LocalDateTime; public class VirtualWorkingItemVO extends VirtualWorking implements Serializable { @ApiModelProperty(value = "每小时辅助费用") + @JsonFormat(pattern = "#.####") + @JsonSerialize(using = BigDecimalSerializer.class) private BigDecimal hourlyAuxiliaryFee; public BigDecimal getHourlyAuxiliaryFee() { @@ -29,9 +34,13 @@ public class VirtualWorkingItemVO extends VirtualWorking implements Serializable } @ApiModelProperty(value = "水电及生产辅料耗材") + @JsonFormat(pattern = "#.####") + @JsonSerialize(using = BigDecimalSerializer.class) private BigDecimal auxiliaryMaterialsAndConsumables; @ApiModelProperty(value = "辅助部门人工费") + @JsonFormat(pattern = "#.####") + @JsonSerialize(using = BigDecimalSerializer.class) private BigDecimal auxiliaryDepartmentLaborCosts; @ApiModelProperty(value = "创建人") diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/WorkingTypeVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/WorkingTypeVO.java index f5cc6a96..02ec45d8 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/WorkingTypeVO.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/WorkingTypeVO.java @@ -17,6 +17,9 @@ import java.time.LocalDateTime; @ApiModel(value = "com-nflg-product-technology-pojo-vo-WorkingTypeVO") public class WorkingTypeVO implements Serializable { + @ApiModelProperty(value = "主键行id") + private Integer id; + @ApiModelProperty("工时类型") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/CostConfigService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/CostConfigService.java index 304223fb..8a3447ab 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/CostConfigService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/CostConfigService.java @@ -2,13 +2,11 @@ package com.nflg.product.technology.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.nflg.product.technology.constant.TechnologyConfigEnum; import com.nflg.product.technology.pojo.entity.VirtualWorkingEntity; import com.nflg.product.technology.pojo.entity.WorkingTypeEntity; -import com.nflg.product.technology.pojo.query.CostConfigQuery; -import com.nflg.product.technology.pojo.query.MonthlyWorkingHoursConfigQuery; -import com.nflg.product.technology.pojo.query.VirtualWorkingManday; -import com.nflg.product.technology.pojo.query.VirtualWorkingSaveQuery; +import com.nflg.product.technology.pojo.query.*; import com.nflg.product.technology.pojo.vo.*; import com.nflg.product.technology.util.BigDecimalUtil; import com.nflg.product.technology.util.MapUtil; @@ -19,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; @Component @Slf4j @@ -64,15 +63,26 @@ public class CostConfigService { manday.setBenefit(technologyConfigService.getBenefit()); vo.setManday(manday); List virtualWorkingEntities = virtualWorkingService.list(); + List list = workingTypeService.list(); + list.forEach(l -> { + if (virtualWorkingEntities.stream().noneMatch(v -> StrUtil.equals(l.getName(), v.getName()))) { + VirtualWorkingEntity entity = new VirtualWorkingEntity(); + entity.setName(l.getName()); + virtualWorkingEntities.add(entity); + } + }); if (CollectionUtil.isNotEmpty(virtualWorkingEntities)) { List virtualWorkingItemVOS = Convert.toList(VirtualWorkingItemVO.class, virtualWorkingEntities); virtualWorkingItemVOS.forEach(vw -> { - vw.setAuxiliaryMaterialsAndConsumables(BigDecimalUtil.divide(vw.getFeeTotalYear() - , new BigDecimal("12"), BigDecimalUtil.nullToDefault(technologyConfigService.getUserNum(), BigDecimal.ONE) + vw.setAuxiliaryMaterialsAndConsumables(BigDecimalUtil.divide( + vw.getFeeTotalYear() + , new BigDecimal("12") + , BigDecimalUtil.nullToDefault(technologyConfigService.getUserNum(), BigDecimal.ONE) , BigDecimalUtil.nullToDefault(technologyConfigService.getTheoreticalDailyWorkingHours(), BigDecimal.ONE) , BigDecimalUtil.nullToDefault(technologyConfigService.getTheoreticalWorkingDaysPerMonth(), BigDecimal.ONE) , BigDecimalUtil.nullToDefault(technologyConfigService.getCorrectionFactor(), BigDecimal.ONE))); - vw.setAuxiliaryDepartmentLaborCosts(BigDecimalUtil.divide(vw.getFeeAssistantLaborCostTotal() + vw.setAuxiliaryDepartmentLaborCosts(BigDecimalUtil.divide( + vw.getFeeAssistantLaborCostTotal() , new BigDecimal("12") , BigDecimalUtil.nullToDefault(technologyConfigService.getMonthlyTheoreticalFullLoadWorkingHours(), BigDecimal.ONE))); }); @@ -89,8 +99,10 @@ public class CostConfigService { return Convert.toList(WorkingTypeVO.class, list); } - public void saveWorkingTypes(List types) { + @Transactional + public void saveWorkingTypes(List types) { workingTypeService.save(types); + virtualWorkingService.deleteNotInNames(types.stream().map(WorkingTypeQuery::getName).collect(Collectors.toList())); } public void saveMonthlyWorkingHoursConfig(MonthlyWorkingHoursConfigQuery query) { diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/PaintCostConfigService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/PaintCostConfigService.java index 8c0b0f42..bbfddbf5 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/PaintCostConfigService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/PaintCostConfigService.java @@ -1,7 +1,8 @@ package com.nflg.product.technology.service; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.technology.mapper.master.PaintCostConfigMapper; @@ -15,6 +16,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; @Service @Slf4j @@ -22,26 +24,33 @@ public class PaintCostConfigService extends ServiceImpl configs) { - List all = list(); - remove(new QueryWrapper<>()); - List forSave = new ArrayList<>(); + if (CollectionUtil.isEmpty(configs)) { + remove(new QueryWrapper<>()); + return; + } + baseMapper.delete(Wrappers.lambdaQuery(PaintCostConfigEntity.class).notIn(PaintCostConfigEntity::getId, configs.stream().map(PaintCostConfig::getId).filter(Objects::nonNull).collect(Collectors.toSet()))); + List forAdd = new ArrayList<>(); + List forUpdate = new ArrayList<>(); configs.forEach(c -> { - PaintCostConfigEntity entity = all.stream() - .filter(f -> StrUtil.equals(c.getName(), f.getName())) - .findFirst() - .orElse(null); - if (Objects.isNull(entity)) { - entity = new PaintCostConfigEntity(); + PaintCostConfigEntity entity = new PaintCostConfigEntity(); + if (Objects.isNull(c.getId()) || 0 == c.getId()) { entity.setName(c.getName()); entity.setCreateBy(SessionUtil.getRealName()); entity.setCreateTime(LocalDateTime.now()); + forAdd.add(entity); } else { - entity.setUpdateBy(SessionUtil.getUserName()); + entity.setId(c.getId()); + entity.setUpdateBy(SessionUtil.getRealName()); entity.setUpdateTime(LocalDateTime.now()); + forUpdate.add(entity); } entity.setCost(c.getCost()); - forSave.add(entity); }); - saveOrUpdateBatch(forSave); + if (CollectionUtil.isNotEmpty(forAdd)) { + saveBatch(forAdd); + } + if (CollectionUtil.isNotEmpty(forUpdate)) { + updateBatchById(forUpdate); + } } } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/SteelsCostConfigService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/SteelsCostConfigService.java index 3dd730d7..da5fe2e9 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/SteelsCostConfigService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/SteelsCostConfigService.java @@ -1,7 +1,8 @@ package com.nflg.product.technology.service; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.technology.mapper.master.SteelsCostConfigMapper; @@ -15,6 +16,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; @Service @Slf4j @@ -22,27 +24,34 @@ public class SteelsCostConfigService extends ServiceImpl configs) { - List all = list(); - remove(new QueryWrapper<>()); - List forSave = new ArrayList<>(); + if (CollectionUtil.isEmpty(configs)) { + remove(new QueryWrapper<>()); + return; + } + baseMapper.delete(Wrappers.lambdaQuery(SteelsCostConfigEntity.class).notIn(SteelsCostConfigEntity::getId, configs.stream().map(SteelsCostConfig::getId).filter(Objects::nonNull).collect(Collectors.toSet()))); + List forAdd = new ArrayList<>(); + List forUpdate = new ArrayList<>(); configs.forEach(c -> { - SteelsCostConfigEntity entity = all.stream() - .filter(f -> StrUtil.equals(c.getName(), f.getName())) - .findFirst() - .orElse(null); - if (Objects.isNull(entity)) { - entity = new SteelsCostConfigEntity(); + SteelsCostConfigEntity entity = new SteelsCostConfigEntity(); + if (Objects.isNull(c.getId()) || 0 == c.getId()) { entity.setName(c.getName()); entity.setCreateBy(SessionUtil.getRealName()); entity.setCreateTime(LocalDateTime.now()); + forAdd.add(entity); } else { - entity.setUpdateBy(SessionUtil.getUserName()); + entity.setId(c.getId()); + entity.setUpdateBy(SessionUtil.getRealName()); entity.setUpdateTime(LocalDateTime.now()); + forUpdate.add(entity); } entity.setCost(c.getCost()); entity.setWastage(c.getWastage()); - forSave.add(entity); }); - saveOrUpdateBatch(forSave); + if (CollectionUtil.isNotEmpty(forAdd)) { + saveBatch(forAdd); + } + if (CollectionUtil.isNotEmpty(forUpdate)) { + updateBatchById(forUpdate); + } } } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/VirtualWorkingService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/VirtualWorkingService.java index 2375e793..f1b0c51e 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/VirtualWorkingService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/VirtualWorkingService.java @@ -2,6 +2,7 @@ package com.nflg.product.technology.service; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.technology.mapper.master.VirtualWorkingMapper; @@ -9,6 +10,7 @@ import com.nflg.product.technology.pojo.entity.VirtualWorkingEntity; import com.nflg.product.technology.pojo.entity.WorkingTypeEntity; import com.nflg.product.technology.pojo.query.VirtualWorking; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,6 +19,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * @author 曹鹏飞 @@ -31,27 +34,28 @@ public class VirtualWorkingService extends ServiceImpl list) { - List all = list(); - remove(new QueryWrapper<>()); if (CollectionUtil.isEmpty(list)) { + remove(new QueryWrapper<>()); return; } + baseMapper.delete(Wrappers.lambdaQuery(VirtualWorkingEntity.class).notIn(VirtualWorkingEntity::getId, list.stream().map(VirtualWorking::getId).filter(Objects::nonNull).collect(Collectors.toSet()))); List types = workingTypeService.list(); - List forSave = new ArrayList<>(); + List forAdd = new ArrayList<>(); + List forUpdate = new ArrayList<>(); list.forEach(vw -> { if (types.stream().anyMatch(t -> Objects.equals(t.getName(), vw.getName()))) { - VirtualWorkingEntity entity = all.stream() - .filter(a -> Objects.equals(a.getName(), vw.getName())) - .findFirst() - .orElse(null); - if (Objects.isNull(entity)) { + VirtualWorkingEntity entity = new VirtualWorkingEntity(); + if (Objects.isNull(vw.getId()) || 0 == vw.getId()) { entity = new VirtualWorkingEntity(); entity.setName(vw.getName()); entity.setCreateBy(SessionUtil.getRealName()); entity.setCreateTime(LocalDateTime.now()); + forAdd.add(entity); } else { + entity.setId(vw.getId()); entity.setUpdateBy(SessionUtil.getRealName()); entity.setUpdateTime(LocalDateTime.now()); + forUpdate.add(entity); } entity.setUserNum(vw.getUserNum()); entity.setFeeTotalYear(vw.getFeeTotalYear()); @@ -60,11 +64,18 @@ public class VirtualWorkingService extends ServiceImpl collect) { + baseMapper.delete(Wrappers.lambdaQuery(VirtualWorkingEntity.class).notIn(VirtualWorkingEntity::getName, collect)); + } } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/WorkingTypeService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/WorkingTypeService.java index 22feb674..647e0426 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/WorkingTypeService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/WorkingTypeService.java @@ -1,11 +1,13 @@ package com.nflg.product.technology.service; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.technology.mapper.master.WorkingTypeMapper; import com.nflg.product.technology.pojo.entity.WorkingTypeEntity; -import com.nflg.product.technology.util.MapUtil; +import com.nflg.product.technology.pojo.query.WorkingTypeQuery; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -13,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; @Service @@ -20,27 +23,24 @@ import java.util.stream.Collectors; public class WorkingTypeService extends ServiceImpl { @Transactional - public void save(List list) { - List datas = list().stream().map(WorkingTypeEntity::getName).collect(Collectors.toList()); - List difference = datas.stream() - .filter(element -> !list.contains(element)) - .collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(difference)) { - removeByIds(difference); + public void save(List list) { + if (CollectionUtil.isEmpty(list)) { + remove(new QueryWrapper<>()); + return; } - difference = list.stream() - .filter(element -> !datas.contains(element)) - .collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(difference)) { - List adds = new ArrayList<>(MapUtil.calculateInitialCapacity(difference.size())); - difference.forEach(d -> { + baseMapper.delete(Wrappers.lambdaQuery(WorkingTypeEntity.class).notIn(WorkingTypeEntity::getId, list.stream().map(WorkingTypeQuery::getId).filter(Objects::nonNull).collect(Collectors.toSet()))); + List forAdd = new ArrayList<>(); + list.forEach(l -> { + if (Objects.isNull(l.getId()) || 0 == l.getId()) { WorkingTypeEntity entity = new WorkingTypeEntity(); - entity.setName(d); + entity.setName(l.getName()); entity.setCreateBy(SessionUtil.getRealName()); entity.setCreateTime(LocalDateTime.now()); - adds.add(entity); - }); - saveBatch(adds); + forAdd.add(entity); + } + }); + if (CollectionUtil.isNotEmpty(forAdd)) { + saveBatch(forAdd); } } } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/BigDecimalUtil.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/BigDecimalUtil.java index 0ae119be..88a56078 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/BigDecimalUtil.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/BigDecimalUtil.java @@ -20,7 +20,7 @@ public class BigDecimalUtil { if (value.compareTo(BigDecimal.ZERO) == 0) { throw new ArithmeticException("被除数不能为零"); } - result = result.divide(value, 4, RoundingMode.HALF_UP); + result = result.divide(value, 8, RoundingMode.HALF_UP); } } return result; diff --git a/nflg_project_dev/nflg-technology/src/test/java/BigDecimalUtilTest.java b/nflg_project_dev/nflg-technology/src/test/java/BigDecimalUtilTest.java new file mode 100644 index 00000000..3c8b75fc --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/test/java/BigDecimalUtilTest.java @@ -0,0 +1,20 @@ +import com.nflg.product.technology.util.BigDecimalUtil; +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; + +public class BigDecimalUtilTest { + + @Test + public void test1() { + BigDecimal feeTotalYear = new BigDecimal("4714.3424"); + BigDecimal monthOfYear = new BigDecimal("12"); + BigDecimal userNum = new BigDecimal("595.0000"); + BigDecimal theoreticalDailyWorkingHours = new BigDecimal("12"); + BigDecimal theoreticalWorkingDaysPerMonth = new BigDecimal("6"); + BigDecimal correctionFactor = new BigDecimal("0.06"); + BigDecimal result = BigDecimalUtil.divide(feeTotalYear, monthOfYear, userNum, theoreticalDailyWorkingHours, theoreticalWorkingDaysPerMonth, correctionFactor); + //BigDecimal result = BigDecimalUtil.divide(feeTotalYear, monthOfYear); + System.out.println(result); + } +}