Merge remote-tracking branch 'origin/dev' into test

yun-zuoyi
汪云昊 4 years ago
commit d475674be4

@ -67,10 +67,11 @@ public interface ISysOrderNoRuleService {
/** /**
* *
* @param orderNoRule * @param orderNoRule
* @param orderNoTemplate
* @return * @return
*/ */
@ApiOperation(value = "根据单号代码获取单号信息") @ApiOperation(value = "根据单号代码获取单号信息")
List<SysOrderNoRule> doGetSysOrderNoRuleByNum(SysOrderNoRule orderNoRule,int num); List<SysOrderNoRule> doGetSysOrderNoRuleByNum(SysOrderNoRule orderNoRule,String orderNoTemplate,int num);
/** /**
* id * id

@ -40,7 +40,7 @@ import java.util.List;
**/ **/
@RestController @RestController
@Api(tags = "部门管理服务") @Api(tags = "部门管理服务")
@RequestMapping(PlatformConstWords.BASE_URL +"/department") @RequestMapping(PlatformConstWords.BASE_URL + "/department")
public class SysDepartmentController extends CrudBaseController<SysDepartment> { public class SysDepartmentController extends CrudBaseController<SysDepartment> {
public static final Logger LOGGER = LoggerFactory.getLogger(SysDepartmentController.class); public static final Logger LOGGER = LoggerFactory.getLogger(SysDepartmentController.class);
@ -72,6 +72,7 @@ public class SysDepartmentController extends CrudBaseController<SysDepartment> {
SysOrganize organize = organizeService.get(bean.getOrganizeId()); SysOrganize organize = organizeService.get(bean.getOrganizeId());
ValidatorBean.checkNotNull(organize, "不存在的组织信息"); ValidatorBean.checkNotNull(organize, "不存在的组织信息");
bean.setOrganizeNameRdd(organize.getName()); bean.setOrganizeNameRdd(organize.getName());
bean.setOrganizeCode(organize.getOrganizeCode());
if (bean.getParentId() == null || bean.getParentId() <= 0) { if (bean.getParentId() == null || bean.getParentId() <= 0) {
bean.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); bean.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue());
@ -187,11 +188,11 @@ public class SysDepartmentController extends CrudBaseController<SysDepartment> {
public ResultBean findSysDepartmentList() { public ResultBean findSysDepartmentList() {
try { try {
List<SysDepartment> result = null; List<SysDepartment> result = null;
if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){ if (AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)) {
result = departmentService.findAll(); result = departmentService.findAll();
}else { } else {
List<SysRefUserDepartment> refList = personnelService.findSysRefUserDepartmentByOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); List<SysRefUserDepartment> refList = personnelService.findSysRefUserDepartmentByOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
if(refList != null && refList.size() > 0){ if (refList != null && refList.size() > 0) {
List<Long> idList = new ArrayList<>(refList.size()); List<Long> idList = new ArrayList<>(refList.size());
refList.forEach(ref -> idList.add(ref.getDepartmentId())); refList.forEach(ref -> idList.add(ref.getDepartmentId()));
result = departmentService.findByOrganizeIdList(idList); result = departmentService.findByOrganizeIdList(idList);

@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base;
import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService; import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysOrderNoRuleService; import cn.estsh.i3plus.core.api.iservice.busi.ISysOrderNoRuleService;
import cn.estsh.i3plus.core.apiservice.util.OrderNoMakeUtil;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.CommonConstWords;
@ -66,7 +67,6 @@ public class SynchronizedService implements ISynchronizedService {
*/ */
@Override @Override
public synchronized List<SysOrderNoRule> nextOrderNo(String code, int num) { public synchronized List<SysOrderNoRule> nextOrderNo(String code, int num) {
String redisKey = REDIS_PREFIX_LOCK_GET_ORDER_NO + ":" + code;
//先拿规则 //先拿规则
SysOrderNoRule codeRole = sysOrderNoRuleService.getSysOrderNoRuleByCode(code); SysOrderNoRule codeRole = sysOrderNoRuleService.getSysOrderNoRuleByCode(code);
if (codeRole == null) { if (codeRole == null) {
@ -87,14 +87,20 @@ public class SynchronizedService implements ISynchronizedService {
sysOrderNoRuleService.detachSysOrderNoRule(codeRole); sysOrderNoRuleService.detachSysOrderNoRule(codeRole);
String orderNoTemplate = OrderNoMakeUtil.getOrderNoTemplate(codeRole);
String redisKey = REDIS_PREFIX_LOCK_GET_ORDER_NO + ":" + code + ":" + orderNoTemplate;
long orginSerialNo = codeRole.getSerialNo() < 0 ? 0 : codeRole.getSerialNo(); long orginSerialNo = codeRole.getSerialNo() < 0 ? 0 : codeRole.getSerialNo();
long incr = codeRole.getSerialNoIncrement() * num; long incr = codeRole.getSerialNoIncrement() * num;
//缓存增加 //缓存增加
//先判断redis是否存在如果不存在则用默认初始值+步长*数量,如果存在,则添加步长 * 数量 //先判断redis是否存在如果不存在则用默认初始值+步长*数量,如果存在,则添加步长 * 数量
codeRole.setSerialNo(redisRes.putObjAdditional(redisKey, orginSerialNo, incr) - incr); codeRole.setSerialNo(redisRes.putObjAdditional(redisKey, orginSerialNo, incr) - incr);
// 设置缓存有效期
redisRes.expire(redisKey, PlatformConstWords.REDIS_EXPIRE_SECONDS);
// 生成单号更缓存 // 生成单号更缓存
List<SysOrderNoRule> orderNoRuleList = sysOrderNoRuleService.doGetSysOrderNoRuleByNum(codeRole, num); List<SysOrderNoRule> orderNoRuleList = sysOrderNoRuleService.doGetSysOrderNoRuleByNum(codeRole, orderNoTemplate, num);
try { try {
rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_ORDER_NO_RECORD, JsonUtilTool.encode(orderNoRuleList)); rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_ORDER_NO_RECORD, JsonUtilTool.encode(orderNoRuleList));

@ -104,15 +104,16 @@ public class SysOrderNoRuleService implements ISysOrderNoRuleService {
* *
* *
* @param sysOrderNoRule * @param sysOrderNoRule
* @param orderNoTemplate
* @param num * @param num
* @return * @return
*/ */
@Override @Override
public synchronized List<SysOrderNoRule> doGetSysOrderNoRuleByNum(SysOrderNoRule sysOrderNoRule, int num) { public synchronized List<SysOrderNoRule> doGetSysOrderNoRuleByNum(SysOrderNoRule sysOrderNoRule, String orderNoTemplate, int num) {
List<SysOrderNoRule> resultList = new ArrayList<>(); List<SysOrderNoRule> resultList = new ArrayList<>();
try { try {
for (int i = 0; i < num; i++) { for (int i = 0; i < num; i++) {
sysOrderNoRule = OrderNoMakeUtil.next(CloneTool.clone(sysOrderNoRule)); sysOrderNoRule = OrderNoMakeUtil.next(CloneTool.clone(sysOrderNoRule), orderNoTemplate);
resultList.add(sysOrderNoRule); resultList.add(sysOrderNoRule);
} }
}catch (Exception e){ }catch (Exception e){

@ -10,6 +10,8 @@ import org.apache.commons.lang3.StringUtils;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.SERIAL_NO;
/** /**
* @Description : * @Description :
* @Reference : * @Reference :
@ -19,11 +21,12 @@ import java.text.SimpleDateFormat;
**/ **/
public class OrderNoMakeUtil { public class OrderNoMakeUtil {
private OrderNoMakeUtil(){} private OrderNoMakeUtil() {
}
public static SysOrderNoRule next(SysOrderNoRule orderNoRule) { public static String getOrderNoTemplate(SysOrderNoRule orderNoRule) {
// 数据校验 // 数据校验
if(orderNoRule == null || StringUtils.isBlank(orderNoRule.getOrderNoRule())){ if (orderNoRule == null || StringUtils.isBlank(orderNoRule.getOrderNoRule())) {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
@ -32,29 +35,41 @@ public class OrderNoMakeUtil {
} }
String[] dateTime = new SimpleDateFormat("yyyy-yy-MM-dd-HH-mm-ss").format(System.currentTimeMillis()).split("-"); String[] dateTime = new SimpleDateFormat("yyyy-yy-MM-dd-HH-mm-ss").format(System.currentTimeMillis()).split("-");
StringBuilder orderNo = new StringBuilder(orderNoRule.getOrderNoRule()); StringBuilder orderNoTemplate = new StringBuilder(orderNoRule.getOrderNoRule());
// 单号表达式 // 单号表达式
replace(orderNo, PlatformConstWords.YEAR_FULL, dateTime[0]); replace(orderNoTemplate, PlatformConstWords.YEAR_FULL, dateTime[0]);
replace(orderNo, PlatformConstWords.YEAR, dateTime[1]); replace(orderNoTemplate, PlatformConstWords.YEAR, dateTime[1]);
replace(orderNo, PlatformConstWords.MONTH, dateTime[2]); replace(orderNoTemplate, PlatformConstWords.MONTH, dateTime[2]);
replace(orderNo, PlatformConstWords.DAY, dateTime[3]); replace(orderNoTemplate, PlatformConstWords.DAY, dateTime[3]);
replace(orderNo, PlatformConstWords.HOUR_OF_DAY, dateTime[4]); replace(orderNoTemplate, PlatformConstWords.HOUR_OF_DAY, dateTime[4]);
replace(orderNo, PlatformConstWords.MINUTE, dateTime[5]); replace(orderNoTemplate, PlatformConstWords.MINUTE, dateTime[5]);
replace(orderNo, PlatformConstWords.SECOND, dateTime[6]); replace(orderNoTemplate, PlatformConstWords.SECOND, dateTime[6]);
return orderNoTemplate.toString();
}
/**
*
* @param orderNoRule
* @param orderNoTemplate
* @return
*/
public static SysOrderNoRule next(SysOrderNoRule orderNoRule, String orderNoTemplate) {
int prefixIdx = orderNoTemplate.indexOf(SERIAL_NO);
// 流水号长度补全表达式 // 流水号长度补全表达式
String serialNoFormatStr = MessageFormat.format(PlatformConstWords.SERIAL_NO_FORMAT, orderNoRule.getSerialNoLength()); String serialNoFormatStr = MessageFormat.format(PlatformConstWords.SERIAL_NO_FORMAT, orderNoRule.getSerialNoLength());
// 判断是否首次生成SerialNo初始值-1 // 判断是否首次生成SerialNo初始值-1
if (orderNoRule.getSerialNo() > 0 && orderNo.indexOf(PlatformConstWords.SERIAL_NO) != -1) { if (orderNoRule.getSerialNo() > 0 && prefixIdx != -1) {
String newNo = orderNo.substring(0,orderNo.indexOf(PlatformConstWords.SERIAL_NO)); String newNo = orderNoTemplate.substring(0, prefixIdx);
String oldNo = orderNoRule.getOrderNo().substring(0,orderNo.indexOf(PlatformConstWords.SERIAL_NO)); String oldNo = orderNoRule.getOrderNo().substring(0, prefixIdx);
long serialNo = orderNoRule.getSerialNo() + orderNoRule.getSerialNoIncrement(); long serialNo = orderNoRule.getSerialNo() + orderNoRule.getSerialNoIncrement();
// 前缀(日期)不同后是否重置流水号 // 前缀(日期)不同后是否重置流水号
if(!newNo.equals(oldNo) && orderNoRule.getIsCycle() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ if (!newNo.equals(oldNo) && orderNoRule.getIsCycle() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
orderNoRule.setSerialNo(orderNoRule.getSerialNoSeed()); orderNoRule.setSerialNo(orderNoRule.getSerialNoSeed());
} else { } else {
orderNoRule.setSerialNo(serialNo); orderNoRule.setSerialNo(serialNo);
@ -67,14 +82,14 @@ public class OrderNoMakeUtil {
} else { } else {
orderNoRule.setSerialNo(orderNoRule.getSerialNoSeed() * orderNoRule.getSerialNoIncrement()); orderNoRule.setSerialNo(orderNoRule.getSerialNoSeed() * orderNoRule.getSerialNoIncrement());
} }
replace(orderNo, PlatformConstWords.SERIAL_NO, String.format(serialNoFormatStr, orderNoRule.getSerialNo()));
orderNoRule.setOrderNo(orderNo.toString()); orderNoRule.setOrderNo(orderNoTemplate.replace(SERIAL_NO,String.format(serialNoFormatStr, orderNoRule.getSerialNo())));
return orderNoRule; return orderNoRule;
} }
/** /**
* *
*
* @param no * @param no
* @param constant * @param constant
* @param param * @param param

@ -24,7 +24,8 @@ public class TestOrderNoMakeUtil extends TestBase {
sysOrderNoRule.setSerialNo(9999L); sysOrderNoRule.setSerialNo(9999L);
sysOrderNoRule.setIsCycle(1); sysOrderNoRule.setIsCycle(1);
System.out.println(OrderNoMakeUtil.next(sysOrderNoRule)); String orderNoTemplate = OrderNoMakeUtil.getOrderNoTemplate(sysOrderNoRule);
System.out.println(OrderNoMakeUtil.next(sysOrderNoRule,orderNoTemplate));
// String d= MessageFormat.format("%0{0}d", 3); // String d= MessageFormat.format("%0{0}d", 3);
// System.out.println(d); // System.out.println(d);

Loading…
Cancel
Save