From 7b88c6cc336a51a162fda0917d70a82b23096ca6 Mon Sep 17 00:00:00 2001 From: "yunhao.wang" Date: Tue, 12 Mar 2019 18:37:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=A1=E7=A0=81=E8=A7=84=E5=88=99=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E5=BE=AE=E6=9C=8D=E6=9D=A1=E7=A0=81=E8=A7=A3?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/iservice/busi/ISysBarcodeRuleService.java | 72 ++++++++++ ...tController.java => DemoTestingController.java} | 80 ++++++++++- .../controller/busi/SysBarcodeRuleController.java | 149 +++++++++++++++++++++ .../apiservice/controller/busi/TestThread.java | 31 ----- .../core/apiservice/controller/busi/Text.java | 61 --------- .../serviceimpl/busi/SysBarcodeRuleService.java | 103 ++++++++++++++ .../core/apiservice/util/BarcodeParseUtil.java | 71 ++++++++++ 7 files changed, 470 insertions(+), 97 deletions(-) create mode 100644 modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysBarcodeRuleService.java rename modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/{busi/TestController.java => DemoTestingController.java} (93%) create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysBarcodeRuleController.java delete mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestThread.java delete mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysBarcodeRuleService.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/BarcodeParseUtil.java diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysBarcodeRuleService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysBarcodeRuleService.java new file mode 100644 index 0000000..2a068ce --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysBarcodeRuleService.java @@ -0,0 +1,72 @@ +package cn.estsh.i3plus.core.api.iservice.busi; + +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.platform.bean.SysBarcodeRule; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +/** + * @Description : 条码规则服务 + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-03-12 16:01 + * @Modify: + **/ +public interface ISysBarcodeRuleService { + + /** + * 添加条码规则 + * @param barcodeRule + */ + @ApiOperation(value = "新增条码规则信息") + SysBarcodeRule insertSysBarcodeRule(SysBarcodeRule barcodeRule); + + /** + * 修改条码规则 + * @param barcodeRule + */ + @ApiOperation(value = "更新条码规则信息") + void updateSysBarcodeRule(SysBarcodeRule barcodeRule); + + /** + * 查找全部条码规则 + * @return + */ + @ApiOperation(value = "查询所有条码规则信息",notes = "查询所有条码规则信息") + List listSysBarcodeRule(); + + /** + * 根据id查找条码规则 + * @param id + * @return + */ + @ApiOperation(value = "查询条码规则信息",notes = "根据ID查询条码规则信息") + SysBarcodeRule getSysBarcodeRuleById(Long id); + + /** + * 根据id删除条码规则 + * @param id + * @return + */ + @ApiOperation(value = "根据id删除条码规则",notes = "根据id删除条码规则") + void deleteSysBarcodeRuleById(Long id); + + /** + * 根据规则代码查询条码规则 + * @param code + * @return + */ + @ApiOperation(value = "根据规则代码查询条码规则",notes = "根据规则代码查询条码规则") + SysBarcodeRule getSysBarcodeRuleByCode(String code); + + /** + * 条码规则复杂查询分页排序 + * @param barcodeRule + * @param pager + * @return + */ + @ApiOperation(value = "根据规则代码查询条码规则",notes = "根据规则代码查询条码规则") + ListPager querySysBarcodeRuleByPager(SysBarcodeRule barcodeRule, Pager pager); +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTestingController.java similarity index 93% rename from modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java rename to modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTestingController.java index 0192f6e..d2e9845 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTestingController.java @@ -1,6 +1,8 @@ -package cn.estsh.i3plus.core.apiservice.controller.busi; +package cn.estsh.i3plus.core.apiservice.controller; import cn.estsh.i3plus.core.api.iservice.busi.*; +import cn.estsh.i3plus.core.apiservice.controller.busi.ComputePi; +import cn.estsh.i3plus.core.apiservice.controller.busi.PersonnelController; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; @@ -31,10 +33,10 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.persistence.EntityManager; +import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -50,8 +52,8 @@ import java.util.UUID; @RestController @Api(description = "IMPP性能测试") @RequestMapping("/impp/white/sys-test") -public class TestController { - public static final Logger LOGGER = LoggerFactory.getLogger(TestController.class); +public class DemoTestingController { + public static final Logger LOGGER = LoggerFactory.getLogger(DemoTestingController.class); String TEXT = "飓风黑兹尔是1954年大西洋飓风季期间造成死亡人数最多、经济损失最惨重的飓风。这场风暴夺走了海地多达1000人的生命,然后又以四级飓风强度从南、北卡罗莱纳州边境附近袭击美国,造成95人丧生。之后黑兹尔转变成温带风暴,但仍然致使81人遇难,其中大部分来自多伦多。由于风暴造成了重大人员伤亡和财产损失,其名称“黑兹尔”因此从大西洋风暴命名名单上退役。黑兹尔摧毁了海地40%的咖啡树和50%的可可作物,对当地经济的影响持续了数年之久。飓风在南、北卡罗莱纳州登陆,冲击点附近的大部分海滨住宅被毁。气旋从北卡罗莱纳州沿大西洋海岸北上,先后影响了弗吉尼亚州、西弗吉尼亚州、马里兰州、特拉华州、新泽西州、宾夕法尼亚州和纽约州,产生的阵风时速有近160公里,造成的经济损失高达3.08亿美元。多伦多市内及周边有许多溪流溢出,导致严重的洪涝灾害。加拿大遭受的损失达到1.35亿加拿大元。由于缺少应对热带气旋的经验,加上风暴强度的保持时间异常之长,多伦多所受影响的严重程度是前所未有的"; @@ -1053,10 +1055,78 @@ public class TestController { public void MakeSql(String path,int page,int pageSize){ try { for (int i = 0; i < page; i++) { - Text.printUsage(path,pageSize, i); + printSql(path,pageSize, i); } } catch (IOException e) { e.printStackTrace(); } } + + public static final String DATA_TEXT = "党的十八大提出,倡导富强、民主、文明、和谐,倡导自由、平等、公正、法治,倡导爱国、敬业、诚信、友善,积极培育和践行社会主义核心价值观。富强、民主、文明、和谐是国家层面的价值目标,自由、平等、公正、法治是社会层面的价值取向,爱国、敬业、诚信、友善是公民个人层面的价值准则,这24个字是社会主义核心价值观的基本内容。"; + + /** + * + * @param path + * @param num + * @param index + * @throws IOException + */ + public static void printSql(String path, int num, int index) throws IOException { + + File dir = new File(path+File.separator+"tool"+File.separator+"temp" + (index / 10)); + if (!dir.exists()) { + System.out.println(dir.mkdirs()); + } + File f = new File(path+File.separator+"tool"+File.separator+"temp" + (index / 10) + File.separator+"insert" + index + ".sql"); + FileWriter fw = new FileWriter(f); + BufferedWriter out = new BufferedWriter(fw); + try { + + SysTool sysTool; + StringBuffer sb; + SnowflakeIdMaker snf = new SnowflakeIdMaker(); + for (int i = 0; i < num; i++) { + sb = new StringBuffer(); + sb.append("insert into sys_tool (id,name,tool_type_name_rdd,tool_type_id,tool_ip,tool_port,tool_description) values "); + sysTool = new SysTool(); + sysTool.setId(snf.nextId() + System.currentTimeMillis()); + sysTool.setName(RandomStringUtils.random(10, DATA_TEXT)); + sysTool.setToolTypeNameRdd(RandomStringUtils.random(10, DATA_TEXT)); + sysTool.setToolTypeId(System.currentTimeMillis()); + sysTool.setToolIp(RandomStringUtils.random(10, DATA_TEXT)); + sysTool.setToolPort((int) (Math.random() * i)); + sysTool.setToolDescription(RandomStringUtils.random(10, DATA_TEXT)); + sysTool.setCreateDatetime(TimeTool.getNowTime(true)); + sysTool.setModifyDatetime(TimeTool.getNowTime(true)); + + sb.append("(" + sysTool.getId() + ",'" + sysTool.getName() + "','" + sysTool.getToolTypeNameRdd() + "'," + sysTool.getToolTypeId() + ",'" + + sysTool.getToolIp() + "'," + sysTool.getToolPort() + ",'" + sysTool.getToolDescription() + "');"); + out.write(sb.toString()); + } + + } finally { + out.close(); + } + } } +class TestThread implements Runnable { + + private Thread t; + private int piLength = 0; + + public TestThread (int piLength){ + this.piLength = piLength; + } + + @Override + public void run() { + ComputePi.computePi(piLength); + } + + public void start () { + if (t == null) { + t = new Thread (this); + t.start (); + } + } +} \ No newline at end of file diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysBarcodeRuleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysBarcodeRuleController.java new file mode 100644 index 0000000..c806378 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysBarcodeRuleController.java @@ -0,0 +1,149 @@ +package cn.estsh.i3plus.core.apiservice.controller.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysBarcodeRuleService; +import cn.estsh.i3plus.core.apiservice.util.BarcodeParseUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.util.PlatformConstWords; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysBarcodeRule; +import cn.estsh.i3plus.pojo.platform.bean.SysConfig; +import cn.estsh.impp.framework.base.controller.CoreBaseController; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @Description :条码规则管理服务 + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-03-12 16:00 + * @Modify: + **/ +@RestController +@Api(description = "条码规则管理服务") +@RequestMapping(PlatformConstWords.BASE_URL +"/sys-barcode-rule") +public class SysBarcodeRuleController extends CoreBaseController { + + public static final Logger LOGGER = LoggerFactory.getLogger(SysConfigController.class); + + @Autowired + private ISysBarcodeRuleService sysBarcodeRuleService; + + @PostMapping("/insert") + @ApiOperation(value = "添加条码规则",notes = "添加条码规则") + public ResultBean insertSysBarcodeRule(SysBarcodeRule sysBarcodeRule) { + try { + // 条件验证 + ValidatorBean.beginValid(sysBarcodeRule) + .notNull("name",sysBarcodeRule.getName()) + .notNull("barcodeRuleCode",sysBarcodeRule.getBarcodeRuleCode()) + .notNull("barcodeRule",sysBarcodeRule.getBarcodeRule()); + + sysBarcodeRuleService.insertSysBarcodeRule(sysBarcodeRule); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PutMapping("/update") + @ApiOperation(value = "修改条码规则",notes = "修改条码规则") + public ResultBean updateSysBarcodeRule(SysBarcodeRule sysBarcodeRule) { + try { + // 条件验证 + ValidatorBean.beginValid(sysBarcodeRule) + .notNull("name",sysBarcodeRule.getName()) + .notNull("barcodeRuleCode",sysBarcodeRule.getBarcodeRuleCode()) + .notNull("barcodeRule",sysBarcodeRule.getBarcodeRule()); + + sysBarcodeRuleService.updateSysBarcodeRule(sysBarcodeRule); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @DeleteMapping("/delete/{id}") + @ApiOperation(value = "删除条码规则",notes = "删除条码规则") + public ResultBean deleteSysBarcodeRuleById(@PathVariable("id") String idStr) { + try { + // 条件验证 + ValidatorBean.checkNotNull(idStr,"id不能为空"); + SysBarcodeRule sysBarcodeRule = sysBarcodeRuleService.getSysBarcodeRuleById(Long.parseLong(idStr)); + if(sysBarcodeRule == null){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("条码规则不存在") + .setErrorSolution("请重新输入条码id") + .build(); + } + + sysBarcodeRuleService.deleteSysBarcodeRuleById(Long.parseLong(idStr)); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @GetMapping("/query") + @ApiOperation(value = "条码规则分页复杂查询",notes = "条码规则分页复杂查询") + public ResultBean querySysBarcodeRuleByPager(SysBarcodeRule sysBarcodeRule, Pager pager) { + try { + ListPager listPager = sysBarcodeRuleService.querySysBarcodeRuleByPager(sysBarcodeRule,pager); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(listPager); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PutMapping("/parser") + @ApiOperation(value = "解析条码规则",notes = "解析条码规则") + public ResultBean querySysBarcodeRuleByPager(String ruleCode, String barcode) { + try { + // 条件验证 + ValidatorBean.checkNotNull(ruleCode,"规则代码不能为空"); + SysBarcodeRule sysBarcodeRule = sysBarcodeRuleService.getSysBarcodeRuleByCode(ruleCode); + if(sysBarcodeRule == null){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("条码规则不存在") + .setErrorSolution("请重新输入条码id") + .build(); + } + + // 解析条码规则 + Map resultMap = BarcodeParseUtil.parse(sysBarcodeRule,barcode); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(resultMap); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestThread.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestThread.java deleted file mode 100644 index 54f1394..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestThread.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.controller.busi; - -/** - * @Description : - * @Reference : - * @Author : yunhao - * @CreateDate : 2019-02-19 18:13 - * @Modify: - **/ -public class TestThread implements Runnable { - - private Thread t; - private int piLength = 0; - - public TestThread (int piLength){ - this.piLength = piLength; - } - - @Override - public void run() { - ComputePi.computePi(piLength); - } - - public void start () { - if (t == null) { - t = new Thread (this); - t.start (); - } - } -} - diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java deleted file mode 100644 index ad86ad6..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.controller.busi; - -import cn.estsh.i3plus.platform.common.tool.TimeTool; -import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; -import cn.estsh.i3plus.pojo.platform.bean.SysTool; -import org.apache.commons.lang3.RandomStringUtils; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -/** - * @Description : 性能测试 - * @Reference : - * @Author : yunhao - * @CreateDate : 2019-02-19 11:41 - * @Modify: - **/ -public class Text { - public static final String TEXT = "党的十八大提出,倡导富强、民主、文明、和谐,倡导自由、平等、公正、法治,倡导爱国、敬业、诚信、友善,积极培育和践行社会主义核心价值观。富强、民主、文明、和谐是国家层面的价值目标,自由、平等、公正、法治是社会层面的价值取向,爱国、敬业、诚信、友善是公民个人层面的价值准则,这24个字是社会主义核心价值观的基本内容。"; - - public static void printUsage(String path, int num, int index) throws IOException { - - File dir = new File(path+File.separator+"tool"+File.separator+"temp" + (index / 10)); - if (!dir.exists()) { - System.out.println(dir.mkdirs()); - } - File f = new File(path+File.separator+"tool"+File.separator+"temp" + (index / 10) + File.separator+"insert" + index + ".sql"); - FileWriter fw = new FileWriter(f); - BufferedWriter out = new BufferedWriter(fw); - try { - - SysTool sysTool; - StringBuffer sb; - SnowflakeIdMaker snf = new SnowflakeIdMaker(); - for (int i = 0; i < num; i++) { - sb = new StringBuffer(); - sb.append("insert into sys_tool (id,name,tool_type_name_rdd,tool_type_id,tool_ip,tool_port,tool_description) values "); - sysTool = new SysTool(); - sysTool.setId(snf.nextId() + System.currentTimeMillis()); - sysTool.setName(RandomStringUtils.random(10, TEXT)); - sysTool.setToolTypeNameRdd(RandomStringUtils.random(10, TEXT)); - sysTool.setToolTypeId(System.currentTimeMillis()); - sysTool.setToolIp(RandomStringUtils.random(10, TEXT)); - sysTool.setToolPort((int) (Math.random() * i)); - sysTool.setToolDescription(RandomStringUtils.random(10, TEXT)); - sysTool.setCreateDatetime(TimeTool.getNowTime(true)); - sysTool.setModifyDatetime(TimeTool.getNowTime(true)); - - sb.append("(" + sysTool.getId() + ",'" + sysTool.getName() + "','" + sysTool.getToolTypeNameRdd() + "'," + sysTool.getToolTypeId() + ",'" - + sysTool.getToolIp() + "'," + sysTool.getToolPort() + ",'" + sysTool.getToolDescription() + "');"); - out.write(sb.toString()); - } - - } finally { - out.close(); - } - } - -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysBarcodeRuleService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysBarcodeRuleService.java new file mode 100644 index 0000000..190700e --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysBarcodeRuleService.java @@ -0,0 +1,103 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysBarcodeRuleService; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.common.PagerHelper; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysBarcodeRule; +import cn.estsh.i3plus.pojo.platform.repository.SysBarcodeRuleRepository; +import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description : 条码规则服务 + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-03-12 16:13 + * @Modify: + **/ +@Service +public class SysBarcodeRuleService implements ISysBarcodeRuleService { + public static final Logger LOGGER = LoggerFactory.getLogger(SysBarcodeRuleService.class); + + @Autowired + private SysBarcodeRuleRepository sysBarcodeRuleRDao; + + @Override + @ApiOperation(value = "新增条码规则信息") + public SysBarcodeRule insertSysBarcodeRule(SysBarcodeRule barcodeRule) { + // 数据校验 + if (sysBarcodeRuleRDao.isExitByProperty("barcodeRuleCode",barcodeRule.getBarcodeRuleCode())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("规则代码已存在") + .setErrorSolution("请重新输入规则代码") + .build(); + } + + return sysBarcodeRuleRDao.insert(barcodeRule); + } + + @Override + @ApiOperation(value = "更新条码规则信息") + public void updateSysBarcodeRule(SysBarcodeRule barcodeRule) { + List list = sysBarcodeRuleRDao.findByHqlWhere(CoreHqlPack.packHqlSysBarcodeRuleCode(barcodeRule)); + if (list == null && list.size() == 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("规则代码已存在") + .setErrorSolution("请重新输入规则代码") + .build(); + } + + sysBarcodeRuleRDao.update(barcodeRule); + } + + @Override + @ApiOperation(value = "查询所有条码规则信息",notes = "查询所有条码规则信息") + public List listSysBarcodeRule() { + return sysBarcodeRuleRDao.list(); + } + + @Override + @ApiOperation(value = "查询条码规则信息",notes = "根据ID查询条码规则信息") + public SysBarcodeRule getSysBarcodeRuleById(Long id) { + return sysBarcodeRuleRDao.getById(id); + } + + @Override + @ApiOperation(value = "根据id删除条码规则",notes = "根据id删除条码规则") + public void deleteSysBarcodeRuleById(Long id) { + sysBarcodeRuleRDao.deleteById(id); + } + + @Override + @ApiOperation(value = "根据规则代码查询条码规则",notes = "根据规则代码查询条码规则") + public SysBarcodeRule getSysBarcodeRuleByCode(String code) { + return sysBarcodeRuleRDao.getByProperty("barcodeRuleCode",code); + } + + @Override + @ApiOperation(value = "根据规则代码查询条码规则",notes = "根据规则代码查询条码规则") + public ListPager querySysBarcodeRuleByPager(SysBarcodeRule barcodeRule, Pager pager) { + if(barcodeRule == null) { + pager = PagerHelper.getPager(pager, sysBarcodeRuleRDao.listCount()); + return new ListPager(sysBarcodeRuleRDao.listPager(pager),pager); + }else { + String hqlPack = CoreHqlPack.packHqlSysBarcodeRule(barcodeRule); + pager = PagerHelper.getPager(pager, sysBarcodeRuleRDao.findByHqlWhereCount(hqlPack)); + return new ListPager(sysBarcodeRuleRDao.findByHqlWherePage(hqlPack + barcodeRule.orderBy(),pager),pager); + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/BarcodeParseUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/BarcodeParseUtil.java new file mode 100644 index 0000000..05c5bbb --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/BarcodeParseUtil.java @@ -0,0 +1,71 @@ +package cn.estsh.i3plus.core.apiservice.util; + +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysBarcodeRule; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Description : 字符串解析 + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-03-12 14:41 + * @Modify: + **/ +public class BarcodeParseUtil { + + /** + * 按指定规则解析条码 + * @param barcodeRule + * @param barcode + * @return + */ + public static Map parse(SysBarcodeRule barcodeRule,String barcode){ + // 数据有效性校验 + if(barcodeRule == null || barcode == null){ + return null; + }else if(barcodeRule.getBarcodeRule() == null || barcodeRule.getBarcodeSeparator() == null){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("条码规则不完善!") + .build(); + } + + // 分隔条码信息 + String[] barcodeKey = barcodeRule.getBarcodeRule().split(barcodeRule.getBarcodeSeparator()); + String[] barcodeValue = barcode.split(barcodeRule.getBarcodeSeparator()); + + if(barcodeKey.length != barcodeValue.length){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("条码与规则不匹配!") + .build(); + } + + // 匹配条码数据 + HashMap barcodeMap = new HashMap<>(); + for (int i = 0; i < barcodeKey.length; i++) { + barcodeMap.put(barcodeKey[i],barcodeValue[i]); + } + return barcodeMap; + } + + public static void main(String[] args) { + SysBarcodeRule barcodeRule = new SysBarcodeRule(); + barcodeRule.setName("测试条码规则"); + barcodeRule.setBarcodeRuleCode("Barcode"); + barcodeRule.setBarcodeRule("orderNo/groupId/num"); + barcodeRule.setBarcodeSeparator("/"); + barcodeRule.setBarcodeRuleDescription("描述"); + + Map barcode= parse(barcodeRule,"99/99/99"); + + System.out.println(barcode); + } + +}