From 2c2015ecf405c0ba20b862c0502f12280db38a26 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J7ED0MB\\yinjinlu" <411641505@qq.com> Date: Sat, 22 Oct 2022 12:29:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=8B=E7=A0=81=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/开发进度/进度甘特图.xlsx | Bin 20601 -> 18563 bytes doc/设计文档/数据库设计/mes-wm.sql | 31 +++ .../controller/WmBarcodeConfigController.java | 104 ++++++++++ .../ktg/mes/wm/domain/WmBarcodeConfig.java | 182 ++++++++++++++++++ .../mes/wm/mapper/WmBarcodeConfigMapper.java | 61 ++++++ .../wm/service/IWmBarcodeConfigService.java | 61 ++++++ .../impl/WmBarcodeConfigServiceImpl.java | 96 +++++++++ .../mapper/wm/WmBarcodeConfigMapper.xml | 121 ++++++++++++ 8 files changed, 656 insertions(+) create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmBarcodeConfigController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/domain/WmBarcodeConfig.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmBarcodeConfigMapper.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmBarcodeConfigService.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmBarcodeConfigServiceImpl.java create mode 100644 ktg-mes/src/main/resources/mapper/wm/WmBarcodeConfigMapper.xml diff --git a/doc/开发进度/进度甘特图.xlsx b/doc/开发进度/进度甘特图.xlsx index 1b496bdc2250844f96debd4687eb27232694e51e..740237ade4e4feae088c9c59b771e832353eab3a 100644 GIT binary patch literal 18563 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 literal 20601 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 diff --git a/doc/设计文档/数据库设计/mes-wm.sql b/doc/设计文档/数据库设计/mes-wm.sql index c82d145..a82d7e0 100644 --- a/doc/设计文档/数据库设计/mes-wm.sql +++ b/doc/设计文档/数据库设计/mes-wm.sql @@ -666,6 +666,9 @@ create table wm_product_recpt_line ( specification varchar(500) comment '规格型号', unit_of_measure varchar(64) comment '单位', quantity_recived double(12,2) not null comment '入库数量', + workorder_id bigint(20) comment '生产工单ID', + workorder_code varchar(64) comment '生产工单编码', + workorder_name varchar(255) comment '生产工单名称', batch_code varchar(255) comment '批次号', warehouse_id bigint(20) comment '仓库ID', warehouse_code varchar(64) comment '仓库编码', @@ -872,6 +875,34 @@ create table wm_barcode ( ) engine=innodb auto_increment=200 comment = '条码清单表'; + + +-- ---------------------------- +-- 18、条码配置 +-- ---------------------------- +drop table if exists wm_barcode_config; +create table wm_barcode_config ( + config_id bigint(20) not null auto_increment comment '配置ID', + barcode_formart varchar(64) not null comment '条码格式', + barcode_type varchar(64) not null comment '条码类型', + content_formart varchar(255) not null comment '内容格式', + content_example varchar(255) comment '内容样例', + auto_gen_flag char(1) default 'Y' comment '是否自动生成', + enable_flag char(1) default 'Y' comment '是否生效', + remark varchar(500) default '' comment '备注', + attr1 varchar(64) default null comment '预留字段1', + attr2 varchar(255) default null comment '预留字段2', + attr3 int(11) default 0 comment '预留字段3', + attr4 int(11) default 0 comment '预留字段4', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + primary key (config_id) +) engine=innodb auto_increment=200 comment = '条码配置'; + + + -- ---------------------------- -- 19、装箱单表 -- ---------------------------- diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmBarcodeConfigController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmBarcodeConfigController.java new file mode 100644 index 0000000..1ba9314 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmBarcodeConfigController.java @@ -0,0 +1,104 @@ +package com.ktg.mes.wm.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.enums.BusinessType; +import com.ktg.mes.wm.domain.WmBarcodeConfig; +import com.ktg.mes.wm.service.IWmBarcodeConfigService; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.common.core.page.TableDataInfo; + +/** + * 条码配置Controller + * + * @author yinjinlu + * @date 2022-10-22 + */ +@RestController +@RequestMapping("/mes/wm/barcodeconfig") +public class WmBarcodeConfigController extends BaseController +{ + @Autowired + private IWmBarcodeConfigService wmBarcodeConfigService; + + /** + * 查询条码配置列表 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:barcodeconfig:list')") + @GetMapping("/list") + public TableDataInfo list(WmBarcodeConfig wmBarcodeConfig) + { + startPage(); + List list = wmBarcodeConfigService.selectWmBarcodeConfigList(wmBarcodeConfig); + return getDataTable(list); + } + + /** + * 导出条码配置列表 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:barcodeconfig:export')") + @Log(title = "条码配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WmBarcodeConfig wmBarcodeConfig) + { + List list = wmBarcodeConfigService.selectWmBarcodeConfigList(wmBarcodeConfig); + ExcelUtil util = new ExcelUtil(WmBarcodeConfig.class); + util.exportExcel(response, list, "条码配置数据"); + } + + /** + * 获取条码配置详细信息 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:barcodeconfig:query')") + @GetMapping(value = "/{configId}") + public AjaxResult getInfo(@PathVariable("configId") Long configId) + { + return AjaxResult.success(wmBarcodeConfigService.selectWmBarcodeConfigByConfigId(configId)); + } + + /** + * 新增条码配置 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:barcodeconfig:add')") + @Log(title = "条码配置", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmBarcodeConfig wmBarcodeConfig) + { + return toAjax(wmBarcodeConfigService.insertWmBarcodeConfig(wmBarcodeConfig)); + } + + /** + * 修改条码配置 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:barcodeconfig:edit')") + @Log(title = "条码配置", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmBarcodeConfig wmBarcodeConfig) + { + return toAjax(wmBarcodeConfigService.updateWmBarcodeConfig(wmBarcodeConfig)); + } + + /** + * 删除条码配置 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:barcodeconfig:remove')") + @Log(title = "条码配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{configIds}") + public AjaxResult remove(@PathVariable Long[] configIds) + { + return toAjax(wmBarcodeConfigService.deleteWmBarcodeConfigByConfigIds(configIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/domain/WmBarcodeConfig.java b/ktg-mes/src/main/java/com/ktg/mes/wm/domain/WmBarcodeConfig.java new file mode 100644 index 0000000..1b19549 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/domain/WmBarcodeConfig.java @@ -0,0 +1,182 @@ +package com.ktg.mes.wm.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ktg.common.annotation.Excel; +import com.ktg.common.core.domain.BaseEntity; + +/** + * 条码配置对象 wm_barcode_config + * + * @author yinjinlu + * @date 2022-10-22 + */ +public class WmBarcodeConfig extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 配置ID */ + private Long configId; + + /** 条码格式 */ + @Excel(name = "条码格式") + private String barcodeFormart; + + /** 条码类型 */ + @Excel(name = "条码类型") + private String barcodeType; + + /** 内容格式 */ + @Excel(name = "内容格式") + private String contentFormart; + + /** 内容样例 */ + @Excel(name = "内容样例") + private String contentExample; + + /** 是否自动生成 */ + @Excel(name = "是否自动生成") + private String autoGenFlag; + + /** 是否生效 */ + @Excel(name = "是否生效") + private String enableFlag; + + /** 预留字段1 */ + @Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + @Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + @Excel(name = "预留字段3") + private Long attr3; + + /** 预留字段4 */ + @Excel(name = "预留字段4") + private Long attr4; + + public void setConfigId(Long configId) + { + this.configId = configId; + } + + public Long getConfigId() + { + return configId; + } + public void setBarcodeFormart(String barcodeFormart) + { + this.barcodeFormart = barcodeFormart; + } + + public String getBarcodeFormart() + { + return barcodeFormart; + } + public void setBarcodeType(String barcodeType) + { + this.barcodeType = barcodeType; + } + + public String getBarcodeType() + { + return barcodeType; + } + public void setContentFormart(String contentFormart) + { + this.contentFormart = contentFormart; + } + + public String getContentFormart() + { + return contentFormart; + } + public void setContentExample(String contentExample) + { + this.contentExample = contentExample; + } + + public String getContentExample() + { + return contentExample; + } + public void setAutoGenFlag(String autoGenFlag) + { + this.autoGenFlag = autoGenFlag; + } + + public String getAutoGenFlag() + { + return autoGenFlag; + } + public void setEnableFlag(String enableFlag) + { + this.enableFlag = enableFlag; + } + + public String getEnableFlag() + { + return enableFlag; + } + public void setAttr1(String attr1) + { + this.attr1 = attr1; + } + + public String getAttr1() + { + return attr1; + } + public void setAttr2(String attr2) + { + this.attr2 = attr2; + } + + public String getAttr2() + { + return attr2; + } + public void setAttr3(Long attr3) + { + this.attr3 = attr3; + } + + public Long getAttr3() + { + return attr3; + } + public void setAttr4(Long attr4) + { + this.attr4 = attr4; + } + + public Long getAttr4() + { + return attr4; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("configId", getConfigId()) + .append("barcodeFormart", getBarcodeFormart()) + .append("barcodeType", getBarcodeType()) + .append("contentFormart", getContentFormart()) + .append("contentExample", getContentExample()) + .append("autoGenFlag", getAutoGenFlag()) + .append("enableFlag", getEnableFlag()) + .append("remark", getRemark()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmBarcodeConfigMapper.java b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmBarcodeConfigMapper.java new file mode 100644 index 0000000..ce5ef7c --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmBarcodeConfigMapper.java @@ -0,0 +1,61 @@ +package com.ktg.mes.wm.mapper; + +import java.util.List; +import com.ktg.mes.wm.domain.WmBarcodeConfig; + +/** + * 条码配置Mapper接口 + * + * @author yinjinlu + * @date 2022-10-22 + */ +public interface WmBarcodeConfigMapper +{ + /** + * 查询条码配置 + * + * @param configId 条码配置主键 + * @return 条码配置 + */ + public WmBarcodeConfig selectWmBarcodeConfigByConfigId(Long configId); + + /** + * 查询条码配置列表 + * + * @param wmBarcodeConfig 条码配置 + * @return 条码配置集合 + */ + public List selectWmBarcodeConfigList(WmBarcodeConfig wmBarcodeConfig); + + /** + * 新增条码配置 + * + * @param wmBarcodeConfig 条码配置 + * @return 结果 + */ + public int insertWmBarcodeConfig(WmBarcodeConfig wmBarcodeConfig); + + /** + * 修改条码配置 + * + * @param wmBarcodeConfig 条码配置 + * @return 结果 + */ + public int updateWmBarcodeConfig(WmBarcodeConfig wmBarcodeConfig); + + /** + * 删除条码配置 + * + * @param configId 条码配置主键 + * @return 结果 + */ + public int deleteWmBarcodeConfigByConfigId(Long configId); + + /** + * 批量删除条码配置 + * + * @param configIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWmBarcodeConfigByConfigIds(Long[] configIds); +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmBarcodeConfigService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmBarcodeConfigService.java new file mode 100644 index 0000000..0dc26f2 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmBarcodeConfigService.java @@ -0,0 +1,61 @@ +package com.ktg.mes.wm.service; + +import java.util.List; +import com.ktg.mes.wm.domain.WmBarcodeConfig; + +/** + * 条码配置Service接口 + * + * @author yinjinlu + * @date 2022-10-22 + */ +public interface IWmBarcodeConfigService +{ + /** + * 查询条码配置 + * + * @param configId 条码配置主键 + * @return 条码配置 + */ + public WmBarcodeConfig selectWmBarcodeConfigByConfigId(Long configId); + + /** + * 查询条码配置列表 + * + * @param wmBarcodeConfig 条码配置 + * @return 条码配置集合 + */ + public List selectWmBarcodeConfigList(WmBarcodeConfig wmBarcodeConfig); + + /** + * 新增条码配置 + * + * @param wmBarcodeConfig 条码配置 + * @return 结果 + */ + public int insertWmBarcodeConfig(WmBarcodeConfig wmBarcodeConfig); + + /** + * 修改条码配置 + * + * @param wmBarcodeConfig 条码配置 + * @return 结果 + */ + public int updateWmBarcodeConfig(WmBarcodeConfig wmBarcodeConfig); + + /** + * 批量删除条码配置 + * + * @param configIds 需要删除的条码配置主键集合 + * @return 结果 + */ + public int deleteWmBarcodeConfigByConfigIds(Long[] configIds); + + /** + * 删除条码配置信息 + * + * @param configId 条码配置主键 + * @return 结果 + */ + public int deleteWmBarcodeConfigByConfigId(Long configId); +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmBarcodeConfigServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmBarcodeConfigServiceImpl.java new file mode 100644 index 0000000..1fd298d --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmBarcodeConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.ktg.mes.wm.service.impl; + +import java.util.List; +import com.ktg.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ktg.mes.wm.mapper.WmBarcodeConfigMapper; +import com.ktg.mes.wm.domain.WmBarcodeConfig; +import com.ktg.mes.wm.service.IWmBarcodeConfigService; + +/** + * 条码配置Service业务层处理 + * + * @author yinjinlu + * @date 2022-10-22 + */ +@Service +public class WmBarcodeConfigServiceImpl implements IWmBarcodeConfigService +{ + @Autowired + private WmBarcodeConfigMapper wmBarcodeConfigMapper; + + /** + * 查询条码配置 + * + * @param configId 条码配置主键 + * @return 条码配置 + */ + @Override + public WmBarcodeConfig selectWmBarcodeConfigByConfigId(Long configId) + { + return wmBarcodeConfigMapper.selectWmBarcodeConfigByConfigId(configId); + } + + /** + * 查询条码配置列表 + * + * @param wmBarcodeConfig 条码配置 + * @return 条码配置 + */ + @Override + public List selectWmBarcodeConfigList(WmBarcodeConfig wmBarcodeConfig) + { + return wmBarcodeConfigMapper.selectWmBarcodeConfigList(wmBarcodeConfig); + } + + /** + * 新增条码配置 + * + * @param wmBarcodeConfig 条码配置 + * @return 结果 + */ + @Override + public int insertWmBarcodeConfig(WmBarcodeConfig wmBarcodeConfig) + { + wmBarcodeConfig.setCreateTime(DateUtils.getNowDate()); + return wmBarcodeConfigMapper.insertWmBarcodeConfig(wmBarcodeConfig); + } + + /** + * 修改条码配置 + * + * @param wmBarcodeConfig 条码配置 + * @return 结果 + */ + @Override + public int updateWmBarcodeConfig(WmBarcodeConfig wmBarcodeConfig) + { + wmBarcodeConfig.setUpdateTime(DateUtils.getNowDate()); + return wmBarcodeConfigMapper.updateWmBarcodeConfig(wmBarcodeConfig); + } + + /** + * 批量删除条码配置 + * + * @param configIds 需要删除的条码配置主键 + * @return 结果 + */ + @Override + public int deleteWmBarcodeConfigByConfigIds(Long[] configIds) + { + return wmBarcodeConfigMapper.deleteWmBarcodeConfigByConfigIds(configIds); + } + + /** + * 删除条码配置信息 + * + * @param configId 条码配置主键 + * @return 结果 + */ + @Override + public int deleteWmBarcodeConfigByConfigId(Long configId) + { + return wmBarcodeConfigMapper.deleteWmBarcodeConfigByConfigId(configId); + } +} diff --git a/ktg-mes/src/main/resources/mapper/wm/WmBarcodeConfigMapper.xml b/ktg-mes/src/main/resources/mapper/wm/WmBarcodeConfigMapper.xml new file mode 100644 index 0000000..ca4cbf9 --- /dev/null +++ b/ktg-mes/src/main/resources/mapper/wm/WmBarcodeConfigMapper.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select config_id, barcode_formart, barcode_type, content_formart, content_example, auto_gen_flag, enable_flag, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from wm_barcode_config + + + + + + + + insert into wm_barcode_config + + barcode_formart, + barcode_type, + content_formart, + content_example, + auto_gen_flag, + enable_flag, + remark, + attr1, + attr2, + attr3, + attr4, + create_by, + create_time, + update_by, + update_time, + + + #{barcodeFormart}, + #{barcodeType}, + #{contentFormart}, + #{contentExample}, + #{autoGenFlag}, + #{enableFlag}, + #{remark}, + #{attr1}, + #{attr2}, + #{attr3}, + #{attr4}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update wm_barcode_config + + barcode_formart = #{barcodeFormart}, + barcode_type = #{barcodeType}, + content_formart = #{contentFormart}, + content_example = #{contentExample}, + auto_gen_flag = #{autoGenFlag}, + enable_flag = #{enableFlag}, + remark = #{remark}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where config_id = #{configId} + + + + delete from wm_barcode_config where config_id = #{configId} + + + + delete from wm_barcode_config where config_id in + + #{configId} + + + \ No newline at end of file