Browse Source

fix:[资源库]优化

master
15881625488@163.com 2 weeks ago
parent
commit
6be49dc2a1
5 changed files with 177 additions and 51 deletions
  1. +34
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/GyzjFfjl.java
  2. +45
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/MjyFfjl.java
  3. +14
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/GyzjFfjlServiceImpl.java
  4. +19
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/MjyFfjlServiceImpl.java
  5. +65
    -51
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/UnitTools.java

+ 34
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/GyzjFfjl.java View File

@ -1,5 +1,6 @@
package com.hxhq.business.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
@ -54,6 +55,9 @@ public class GyzjFfjl extends MpBaseEntity
/** 出库量 */
private String ckl;
/** 出库量 */
private BigDecimal basicCkl;
/** 出库量单位 */
private String ckldw;
@ -115,6 +119,9 @@ public class GyzjFfjl extends MpBaseEntity
/** 入库量 */
private String rkl;
/** 入库量 */
private BigDecimal basicRkl;
/** 入库单位 */
private String rkldw;
@ -127,6 +134,9 @@ public class GyzjFfjl extends MpBaseEntity
/** 使用量 */
private String syl;
/** 使用量 */
private BigDecimal basicSyl;
/** 使用量单位 */
private String syldw;
@ -178,6 +188,30 @@ public class GyzjFfjl extends MpBaseEntity
@JsonFormat(pattern = "yyyy-MM-dd")
private Date jyjsrq;
public BigDecimal getBasicCkl() {
return basicCkl;
}
public void setBasicCkl(BigDecimal basicCkl) {
this.basicCkl = basicCkl;
}
public BigDecimal getBasicRkl() {
return basicRkl;
}
public void setBasicRkl(BigDecimal basicRkl) {
this.basicRkl = basicRkl;
}
public BigDecimal getBasicSyl() {
return basicSyl;
}
public void setBasicSyl(BigDecimal basicSyl) {
this.basicSyl = basicSyl;
}
public Integer getDazt() {
return dazt;
}

+ 45
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/MjyFfjl.java View File

@ -1,5 +1,6 @@
package com.hxhq.business.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
@ -53,6 +54,9 @@ public class MjyFfjl extends MpBaseEntity
/** 出库量 */
private String ckl;
/** 出库量 */
private BigDecimal basicCkl;
/** 出库量单位 */
private String ckldw;
@ -120,18 +124,27 @@ public class MjyFfjl extends MpBaseEntity
/** 入库量 */
private String rkl;
/** 入库量 */
private BigDecimal basicRkl;
/** 入库单位 */
private String rkldw;
/** 减少量 */
private String jsl;
/** 减少量 */
private BigDecimal basicJsl;
/** 减少量单位 */
private String jsldw;
/** 使用量 */
private String syl;
/** 使用量 */
private BigDecimal basicSyl;
/** 使用量单位 */
private String syldw;
@ -183,6 +196,38 @@ public class MjyFfjl extends MpBaseEntity
@JsonFormat(pattern = "yyyy-MM-dd")
private Date jyjsrq;
public BigDecimal getBasicCkl() {
return basicCkl;
}
public void setBasicCkl(BigDecimal basicCkl) {
this.basicCkl = basicCkl;
}
public BigDecimal getBasicRkl() {
return basicRkl;
}
public void setBasicRkl(BigDecimal basicRkl) {
this.basicRkl = basicRkl;
}
public BigDecimal getBasicJsl() {
return basicJsl;
}
public void setBasicJsl(BigDecimal basicJsl) {
this.basicJsl = basicJsl;
}
public BigDecimal getBasicSyl() {
return basicSyl;
}
public void setBasicSyl(BigDecimal basicSyl) {
this.basicSyl = basicSyl;
}
public Integer getDazt() {
return dazt;
}

+ 14
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/GyzjFfjlServiceImpl.java View File

@ -18,6 +18,7 @@ import com.hxhq.business.enums.zykgl.JlztEnum;
import com.hxhq.business.form.gyzj.*;
import com.hxhq.business.service.*;
import com.hxhq.business.utils.JctUtil;
import com.hxhq.business.utils.UnitTools;
import com.hxhq.common.core.exception.ServiceException;
import com.hxhq.common.core.utils.DateUtils;
import com.hxhq.common.core.utils.StringUtils;
@ -399,10 +400,18 @@ public class GyzjFfjlServiceImpl extends ServiceImpl i
gyzjFfjl.setGhzytj(form.getGhzytj());
gyzjFfjl.setRkl(form.getRkl());
gyzjFfjl.setRkldw(gyzj.getKcdw());
//更新基础
BigDecimal basicRkl = UnitTools.convert2Basic(gyzjFfjl.getRkl(), gyzjFfjl.getRkldw());
gyzjFfjl.setBasicRkl(basicRkl);
gyzjFfjl.setRkmz(form.getRkmz());
gyzjFfjl.setRkmzdw(gyzj.getKcdw());
gyzjFfjl.setSyl(new BigDecimal(gyzjFfjl.getCkl()).subtract(new BigDecimal(gyzjFfjl.getRkl())).toString());
gyzjFfjl.setSyldw(gyzj.getKcdw());
//更新基础
BigDecimal basicSyl = UnitTools.convert2Basic(gyzjFfjl.getSyl(), gyzjFfjl.getSyldw());
gyzjFfjl.setBasicSyl(basicSyl);
gyzjFfjl.setGhr1Id(ghr1.getUserId());
gyzjFfjl.setGhr1Mc(ghr1.getNickName());
gyzjFfjl.setGhrq(new Date());
@ -453,6 +462,11 @@ public class GyzjFfjlServiceImpl extends ServiceImpl i
gyzjFfjl.setCctj(gyzj.getCctj());
gyzjFfjl.setCkl(gyzj.getKc());
gyzjFfjl.setCkldw(gyzj.getKcdw());
//更新基础
BigDecimal basicCkl = UnitTools.convert2Basic(gyzjFfjl.getCkl(), gyzjFfjl.getCkldw());
gyzjFfjl.setBasicCkl(basicCkl);
gyzjFfjl.setLqr1Id(lqr1.getUserId());
gyzjFfjl.setLqr2Id(lqr2.getUserId());
gyzjFfjl.setFfr1Id(ffr1.getUserId());

+ 19
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/MjyFfjlServiceImpl.java View File

@ -1,5 +1,6 @@
package com.hxhq.business.service.impl;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@ -16,6 +17,7 @@ import com.hxhq.business.form.mjy.*;
import com.hxhq.business.service.*;
import com.hxhq.business.service.IStudyMjyService;
import com.hxhq.business.utils.JctUtil;
import com.hxhq.business.utils.UnitTools;
import com.hxhq.common.core.exception.ServiceException;
import com.hxhq.common.core.utils.DateUtils;
import com.hxhq.common.core.utils.StringUtils;
@ -394,11 +396,24 @@ public class MjyFfjlServiceImpl extends ServiceImpl impl
mjyFfjl.setGhzytj(form.getGhzytj());
mjyFfjl.setRkmz(form.getRkmz());
mjyFfjl.setRkmzdw(mjy.getKcdw());
//更新基础
BigDecimal basicRkmz = UnitTools.convert2Basic(mjyFfjl.getRkmz(), mjyFfjl.getRkmzdw());
mjyFfjl.setBasicRkl(basicRkmz);
mjyFfjl.setJsl(form.getJsl());
mjyFfjl.setJsldw(mjy.getKcdw());
//更新基础
BigDecimal basicJsl = UnitTools.convert2Basic(mjyFfjl.getJsl(), mjyFfjl.getJsldw());
mjyFfjl.setBasicJsl(basicJsl);
mjyFfjl.setSyl(form.getSyl());
mjyFfjl.setSyldw(mjy.getKcdw());
//更新基础
BigDecimal basicSyl = UnitTools.convert2Basic(mjyFfjl.getSyl(), mjyFfjl.getSyldw());
mjyFfjl.setBasicSyl(basicSyl);
mjyFfjl.setGhr1Id(ghr1.getUserId());
mjyFfjl.setGhr1Mc(ghr1.getNickName());
mjyFfjl.setGhrq(new Date());
@ -448,6 +463,10 @@ public class MjyFfjlServiceImpl extends ServiceImpl impl
mjyFfjl.setCctj(mjy.getCctj());
mjyFfjl.setCkl(mjy.getKc());
mjyFfjl.setCkldw(mjy.getKcdw());
//更新基础
BigDecimal basicCkl = UnitTools.convert2Basic(mjyFfjl.getCkl(), mjyFfjl.getCkldw());
mjyFfjl.setBasicCkl(basicCkl);
mjyFfjl.setCkmz( form.getCkmz());
mjyFfjl.setCkmzdw(form.getCkmzdw());
mjyFfjl.setLqr1Id(lqr1.getUserId());

+ 65
- 51
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/UnitTools.java View File

@ -13,15 +13,20 @@ import java.util.Map;
/**
* 单位换算工具
*
* @author HanLong
*/
public class UnitTools {
private static String[] unitList = {"pL", "nL", "uL", "mL", "L", "pg", "ng", "ug", "mg", "g", "kg"};
/** 体积单位 */
/**
* 体积单位
*/
public static String[] VOLUME_UNIT_LIST = {"pL", "nL", "uL", "mL", "L"};
/** 质量单位 */
/**
* 质量单位
*/
public static String[] WEIGHT_UNIT_LIST = {"pg", "ng", "ug", "mg", "g", "kg"};
/**
@ -46,13 +51,14 @@ public class UnitTools {
/**
* 体积相加
* @param kc 当前库存
* @param kcdw 当前库存单位
* @param addKc 增加库存
* @param addKcdw 增加库存单位
*
* @param kc 当前库存
* @param kcdw 当前库存单位
* @param addKc 增加库存
* @param addKcdw 增加库存单位
* @return
*/
public static String addTj(String kc, String kcdw, String addKc, String addKcdw) {
public static String addTj(String kc, String kcdw, String addKc, String addKcdw) {
validateUnit(kcdw);
validateUnit(addKcdw);
BigDecimal kcValue = formatKc(kc);
@ -65,13 +71,14 @@ public class UnitTools {
/**
* 体积相减
* @param kc 当前库存
* @param kcdw 当前库存单位
* @param subKc 扣减库存
* @param subKcdw 扣减库存单位
*
* @param kc 当前库存
* @param kcdw 当前库存单位
* @param subKc 扣减库存
* @param subKcdw 扣减库存单位
* @return
*/
public static String subTj(String kc, String kcdw, String subKc, String subKcdw) {
public static String subTj(String kc, String kcdw, String subKc, String subKcdw) {
validateUnit(kcdw);
validateUnit(subKcdw);
BigDecimal kcValue = formatKc(kc);
@ -85,10 +92,10 @@ public class UnitTools {
}
private static BigDecimal formatKc(String kc) {
if(StringUtils.isEmpty(kc)) {
if (StringUtils.isEmpty(kc)) {
return BigDecimal.ZERO;
}
if(!NumberUtils.isParsable(kc)) {
if (!NumberUtils.isParsable(kc)) {
throw new ServiceException("不支持的库存数量" + kc);
}
return new BigDecimal(kc);
@ -96,19 +103,20 @@ public class UnitTools {
/**
* 体积单位换算
* @param value 需要转换的数值
*
* @param value 需要转换的数值
* @param fromUnit 原始单位
* @param toUnit 目标单位
* @param toUnit 目标单位
* @return 转换后的数值
* @throws IllegalArgumentException 当单位不支持时抛出异常
*/
public static BigDecimal convert(BigDecimal value, String fromUnit, String toUnit) {
// 验证单位是否支持
if (!UNIT_TO_LITER.containsKey(fromUnit) ) {
throw new ServiceException( "不支持的单位:" + fromUnit);
if (!UNIT_TO_LITER.containsKey(fromUnit)) {
throw new ServiceException("不支持的单位:" + fromUnit);
}
if (!UNIT_TO_LITER.containsKey(toUnit) ) {
throw new ServiceException( "不支持的单位:" + toUnit);
if (!UNIT_TO_LITER.containsKey(toUnit)) {
throw new ServiceException("不支持的单位:" + toUnit);
}
// 如果单位相同直接返回
@ -125,57 +133,63 @@ public class UnitTools {
/**
* 转换为基础单位
* @param value 数值
* @param fromUnit 原单位
*
* @param value 数值
* @param fromUnit 原单位
* @return
*/
public static BigDecimal convert2Basic(String value, String fromUnit) {
if(StringUtils.isEmpty(value) || !NumberUtils.isParsable(value)) {
return BigDecimal.ZERO;
}
// 验证单位是否支持
if (!UNIT_TO_LITER.containsKey(fromUnit) ) {
return BigDecimal.ZERO;
}
try {
if (StringUtils.isEmpty(value) || !NumberUtils.isParsable(value)) {
return BigDecimal.ZERO;
}
// 验证单位是否支持
if (!UNIT_TO_LITER.containsKey(fromUnit)) {
return BigDecimal.ZERO;
}
String toUnit = "";
if(Arrays.asList(VOLUME_UNIT_LIST).contains(fromUnit)) {
toUnit = "pL";
} else if(Arrays.asList(WEIGHT_UNIT_LIST).contains(fromUnit)) {
toUnit = "pg";
}
String toUnit = "";
if (Arrays.asList(VOLUME_UNIT_LIST).contains(fromUnit)) {
toUnit = "pL";
} else if (Arrays.asList(WEIGHT_UNIT_LIST).contains(fromUnit)) {
toUnit = "pg";
}
// 如果单位相同直接返回
if (fromUnit.equals(toUnit)) {
return new BigDecimal(value);
}
// 如果单位相同直接返回
if (fromUnit.equals(toUnit)) {
return new BigDecimal(value);
}
// 转换为基准单位
BigDecimal valueInLiters = new BigDecimal(value).multiply(UNIT_TO_LITER.get(fromUnit));
BigDecimal to = UNIT_TO_LITER.get(toUnit);
// 从基准单位转换为目标单位
return valueInLiters.divide(to);
// 转换为基准单位
BigDecimal valueInLiters = new BigDecimal(value).multiply(UNIT_TO_LITER.get(fromUnit));
BigDecimal to = UNIT_TO_LITER.get(toUnit);
// 从基准单位转换为目标单位
return valueInLiters.divide(to);
} catch (Exception ex) {
return BigDecimal.ZERO;
}
}
/**
* 从基础单位转换为指定单位
* @param value 数值
* @param toUnit 原单位
*
* @param value 数值
* @param toUnit 原单位
* @return
*/
public static BigDecimal convert(BigDecimal value, String toUnit) {
if(value == null) {
if (value == null) {
return BigDecimal.ZERO;
}
// 验证单位是否支持
if (!UNIT_TO_LITER.containsKey(toUnit) ) {
if (!UNIT_TO_LITER.containsKey(toUnit)) {
return value;
}
String fromUnit = "";
if(Arrays.asList(VOLUME_UNIT_LIST).contains(toUnit)) {
if (Arrays.asList(VOLUME_UNIT_LIST).contains(toUnit)) {
fromUnit = "pL";
} else if(Arrays.asList(WEIGHT_UNIT_LIST).contains(toUnit)) {
} else if (Arrays.asList(WEIGHT_UNIT_LIST).contains(toUnit)) {
fromUnit = "pg";
}
@ -191,7 +205,7 @@ public class UnitTools {
}
}
if (!isValid) {
throw new ServiceException("不支持的单位: " + unit );
throw new ServiceException("不支持的单位: " + unit);
}
}

Loading…
Cancel
Save