From b0b7c8b645fb44819d2b7278efd606124bffd301 Mon Sep 17 00:00:00 2001 From: "JinLu.Yin" <411641505@qq.com> Date: Sun, 10 Jul 2022 21:07:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A6=E6=8E=A7=E5=B1=8F=E7=AB=AF=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E6=8A=A5=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/设计文档/数据库设计/mes-pro.sql | 32 ++ doc/设计文档/数据库设计/数据库设计.xlsx | Bin 80584 -> 81934 bytes .../pro/controller/ProFeedbackController.java | 105 ++++++ .../pro/controller/ProTaskMobController.java | 33 +- .../com/ktg/mes/pro/domain/ProFeedback.java | 322 ++++++++++++++++++ .../ktg/mes/pro/mapper/ProFeedbackMapper.java | 61 ++++ .../mes/pro/service/IProFeedbackService.java | 61 ++++ .../service/impl/ProFeedbackServiceImpl.java | 96 ++++++ .../mapper/pro/ProFeedbackMapper.xml | 167 +++++++++ 9 files changed, 874 insertions(+), 3 deletions(-) create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProFeedbackController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/domain/ProFeedback.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProFeedbackMapper.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/service/IProFeedbackService.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProFeedbackServiceImpl.java create mode 100644 ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml diff --git a/doc/设计文档/数据库设计/mes-pro.sql b/doc/设计文档/数据库设计/mes-pro.sql index cef7e83..2b7fd15 100644 --- a/doc/设计文档/数据库设计/mes-pro.sql +++ b/doc/设计文档/数据库设计/mes-pro.sql @@ -242,3 +242,35 @@ create table pro_task ( ) engine=innodb auto_increment=200 comment = '生产任务表'; +-- ---------------------------- +-- 4、生产报工记录表 +-- ---------------------------- +drop table if exists pro_feedback; +create table pro_feedback ( + record_id bigint(20) not null auto_increment comment '记录ID', + workstation_id bigint(20) not null comment '工作站ID', + workstation_code varchar(64) comment '工作站编号', + workstation_name varchar(255) comment '工作站名称', + workorder_id bigint(20) not null comment '生产工单ID', + workorder_code varchar(64) comment '生产工单编号', + workorder_name varchar(255) comment '生产工单名称', + task_id bigint(20) comment '生产任务ID', + task_code varchar(64) comment '生产任务编号', + quantity double(14,2) comment '排产数量', + quantity_feedback double(14,2) comment '本次报工数量', + quantity_qualified double(14,2) comment '合格品数量', + quantity_unquanlified double(14,2) comment '不良品数量', + user_name varchar(64) comment '报工用户名', + nick_name varchar(64) comment '昵称', + feedback_time datetime 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 (record_id) +) engine=innodb auto_increment=200 comment = '生产报工记录表'; \ No newline at end of file diff --git a/doc/设计文档/数据库设计/数据库设计.xlsx b/doc/设计文档/数据库设计/数据库设计.xlsx index d344759219c440f961c43d1c6f66436cbeaa695b..71f524c1e2913fc92f23dc1dd9e961e9733251ec 100644 GIT binary patch delta 30058 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

~xR(#zB*n zaTqoJ2pQRRzY?%IaRLoQ#gfbVwk+PG@rBzRx7e-vDkH2@u+9-xngJc$6j$jIxe1TSCNORH=B~9mp4Q$D z;?6O>5y%mj^O26Wq|h7-&&dsJcWa>h5XPeS_8VFd5lWTZ9Ac?8@`B& zE?Q^Yaxr2LJ)FEeoiA*Sh16R-lHjO%is~nq zgeq0Ia^-~q4|9cCohDIaY8yNiZE^rx`-1XCW?-L1oPoHPPjq3*8H(6f*!U1}8cdml zrv{KB+Cwj8a<7|8hAO-NOwXL8d^P)Gep+C1N+4G3tkg4pHV`=(LOrR#km9nU#fw3E zDEB@^@5sfnZVgwX4SS6BL0x}6wW$e~i(h6Ka7rCWepHu9*f(_5V=Ml_v@bxcDB}MZ zv7C{$kW2!f7f-G(_ve$CL$s%>s1b+TQXTpYX-fOq*uiW|sd?;8T@a1(1s|mWxp>7* z&nG%8ZaXqdEa1(BepNcV5Bl8H!=}zN?_+Th!e7l~y?N~W71{aFkO ziBd*1(3pzZ?6GYTjo}H3kVx7Y<^B*vtOYP3D11HL<*WB+y}AwLBPn7JrFAh9(`Kx; zLEM$k8$i0QM)8^S5LA6OBYj32^8)p=J{&ock^uVG%5<;7D9O8h{^Pw0$<=y)+Fj8( zO%@T<8oxU}nAsZT=p)~>VY3BL!7%)&;z>Lu-V;3hT{a>X4eOjb9d7+uwMs_&7z$c#ugY-d|WV&CEoAcqF zrN>zM5TbsN!A5%gEQ7Pzo@8NP&-?Sqm)s;@wL6a%s*({o%8GA+`bq0vwODs%)*nZ= ztj(A$Br*HaOHcEdTW+#E){W@uu6Txk2Ov9XwHUEBzVTimRo$if_SCMKi6y}EzK+gc z)A))6&3*a3r|IE7Xdgbt!^dPy2$P5}ZLcaJ>l@J!doDoX{H2uUu01km<){0XTq_#D zfhuYOdFv5!b%l+;Q{Lzc^;k8}nEzD=^~<3sOWO&7@YRYX%+G7nfLt7o*or=cTHtX_ z0?X*LP2!Eisa??!ADIe@NMewFWG_OnSiw-#z13ePsYiRIo6%pg@C7T5(YFWOBiEZ%$?0ATN|f2 zLvuv|Y7Z@lWk5%fzBOd@QqDa)7f>HEna&X(+{fqkj$nvq8tP=7=2_3cuo4LO+1N

M%7%N9wIRC>gj9z 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 list = proFeedbackService.selectProFeedbackList(proFeedback); + return getDataTable(list); + } + + /** + * 导出生产报工记录列表 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:feedback:export')") + @Log(title = "生产报工记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ProFeedback proFeedback) + { + List list = proFeedbackService.selectProFeedbackList(proFeedback); + ExcelUtil util = new ExcelUtil(ProFeedback.class); + util.exportExcel(response, list, "生产报工记录数据"); + } + + /** + * 获取生产报工记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:feedback:query')") + @GetMapping(value = "/{recordId}") + public AjaxResult getInfo(@PathVariable("recordId") Long recordId) + { + return AjaxResult.success(proFeedbackService.selectProFeedbackByRecordId(recordId)); + } + + /** + * 新增生产报工记录 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:feedback:add')") + @Log(title = "生产报工记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ProFeedback proFeedback) + { + return toAjax(proFeedbackService.insertProFeedback(proFeedback)); + } + + /** + * 修改生产报工记录 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:feedback:edit')") + @Log(title = "生产报工记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ProFeedback proFeedback) + { + return toAjax(proFeedbackService.updateProFeedback(proFeedback)); + } + + /** + * 删除生产报工记录 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:feedback:remove')") + @Log(title = "生产报工记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{recordIds}") + public AjaxResult remove(@PathVariable Long[] recordIds) + { + return toAjax(proFeedbackService.deleteProFeedbackByRecordIds(recordIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskMobController.java b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskMobController.java index 1f59505..ec5e1c1 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskMobController.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskMobController.java @@ -4,12 +4,17 @@ 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.md.domain.MdWorkstation; +import com.ktg.mes.md.service.IMdWorkstationService; +import com.ktg.mes.pro.domain.ProFeedback; import com.ktg.mes.pro.domain.ProTask; +import com.ktg.mes.pro.service.IProFeedbackService; import com.ktg.mes.pro.service.IProTaskService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; @RestController @@ -19,6 +24,12 @@ public class ProTaskMobController extends BaseController { @Autowired private IProTaskService proTaskService; + @Autowired + private IProFeedbackService proFeedbackService; + + @Autowired + private IMdWorkstationService mdWorkstationService; + /** * 查询工作站的生产任务 */ @@ -44,14 +55,30 @@ public class ProTaskMobController extends BaseController { /** * 修改生产任务状态 */ - @PreAuthorize("@ss.hasPermi('mes:pro:protask:edit')") @Log(title = "生产任务", businessType = BusinessType.UPDATE) - @PostMapping + @PostMapping("/change") @ResponseBody - public AjaxResult edit(@RequestBody ProTask proTask) + public AjaxResult changeStatus(ProTask proTask) { return toAjax(proTaskService.updateProTask(proTask)); } + @Log(title = "生产报工", businessType = BusinessType.INSERT) + @PostMapping("/feedBack") + @ResponseBody + public AjaxResult feedBack( ProFeedback feedback){ + MdWorkstation workstation = mdWorkstationService.selectMdWorkstationByWorkstationId(feedback.getWorkstationId()); + feedback.setWorkstationCode(workstation.getWorkstationCode()); + feedback.setWorkstationName(workstation.getWorkstationName()); + + ProTask task = proTaskService.selectProTaskByTaskId(feedback.getTaskId()); + feedback.setTaskCode(task.getTaskCode()); + feedback.setWorkorderId(task.getWorkorderId()); + feedback.setWorkorderCode(task.getWorkorderCode()); + feedback.setWorkorderName(task.getWorkorderName()); + feedback.setQuantity(task.getQuantity()); + feedback.setFeedbackTime(new Date()); + return toAjax(proFeedbackService.insertProFeedback(feedback)); + } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/domain/ProFeedback.java b/ktg-mes/src/main/java/com/ktg/mes/pro/domain/ProFeedback.java new file mode 100644 index 0000000..f0d1715 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/domain/ProFeedback.java @@ -0,0 +1,322 @@ +package com.ktg.mes.pro.domain; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +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; + +/** + * 生产报工记录对象 pro_feedback + * + * @author yinjinlu + * @date 2022-07-10 + */ +public class ProFeedback extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 记录ID */ + private Long recordId; + + /** 工作站ID */ + @Excel(name = "工作站ID") + private Long workstationId; + + /** 工作站编号 */ + @Excel(name = "工作站编号") + private String workstationCode; + + /** 工作站名称 */ + @Excel(name = "工作站名称") + private String workstationName; + + /** 生产工单ID */ + @Excel(name = "生产工单ID") + private Long workorderId; + + /** 生产工单编号 */ + @Excel(name = "生产工单编号") + private String workorderCode; + + /** 生产工单名称 */ + @Excel(name = "生产工单名称") + private String workorderName; + + /** 生产任务ID */ + @Excel(name = "生产任务ID") + private Long taskId; + + /** 生产任务编号 */ + @Excel(name = "生产任务编号") + private String taskCode; + + /** 排产数量 */ + @Excel(name = "排产数量") + private BigDecimal quantity; + + /** 本次报工数量 */ + @Excel(name = "本次报工数量") + private BigDecimal quantityFeedback; + + /** 合格品数量 */ + @Excel(name = "合格品数量") + private BigDecimal quantityQualified; + + /** 不良品数量 */ + @Excel(name = "不良品数量") + private BigDecimal quantityUnquanlified; + + /** 报工用户名 */ + @Excel(name = "报工用户名") + private String userName; + + /** 昵称 */ + @Excel(name = "昵称") + private String nickName; + + /** 报工途径 */ + @Excel(name = "报工途径") + private String feedbackChannel; + + /** 报工时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "报工时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date feedbackTime; + + /** 预留字段1 */ + private String attr1; + + /** 预留字段2 */ + private String attr2; + + /** 预留字段3 */ + private Long attr3; + + /** 预留字段4 */ + private Long attr4; + + public void setRecordId(Long recordId) + { + this.recordId = recordId; + } + + public Long getRecordId() + { + return recordId; + } + public void setWorkstationId(Long workstationId) + { + this.workstationId = workstationId; + } + + public Long getWorkstationId() + { + return workstationId; + } + public void setWorkstationCode(String workstationCode) + { + this.workstationCode = workstationCode; + } + + public String getWorkstationCode() + { + return workstationCode; + } + public void setWorkstationName(String workstationName) + { + this.workstationName = workstationName; + } + + public String getWorkstationName() + { + return workstationName; + } + public void setWorkorderId(Long workorderId) + { + this.workorderId = workorderId; + } + + public Long getWorkorderId() + { + return workorderId; + } + public void setWorkorderCode(String workorderCode) + { + this.workorderCode = workorderCode; + } + + public String getWorkorderCode() + { + return workorderCode; + } + public void setWorkorderName(String workorderName) + { + this.workorderName = workorderName; + } + + public String getWorkorderName() + { + return workorderName; + } + public void setTaskId(Long taskId) + { + this.taskId = taskId; + } + + public Long getTaskId() + { + return taskId; + } + public void setTaskCode(String taskCode) + { + this.taskCode = taskCode; + } + + public String getTaskCode() + { + return taskCode; + } + public void setQuantity(BigDecimal quantity) + { + this.quantity = quantity; + } + + public BigDecimal getQuantity() + { + return quantity; + } + public void setQuantityFeedback(BigDecimal quantityFeedback) + { + this.quantityFeedback = quantityFeedback; + } + + public BigDecimal getQuantityFeedback() + { + return quantityFeedback; + } + public void setQuantityQualified(BigDecimal quantityQualified) + { + this.quantityQualified = quantityQualified; + } + + public BigDecimal getQuantityQualified() + { + return quantityQualified; + } + public void setQuantityUnquanlified(BigDecimal quantityUnquanlified) + { + this.quantityUnquanlified = quantityUnquanlified; + } + + public BigDecimal getQuantityUnquanlified() + { + return quantityUnquanlified; + } + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getUserName() + { + return userName; + } + public void setNickName(String nickName) + { + this.nickName = nickName; + } + + public String getNickName() + { + return nickName; + } + public void setFeedbackChannel(String feedbackChannel) + { + this.feedbackChannel = feedbackChannel; + } + + public String getFeedbackChannel() + { + return feedbackChannel; + } + public void setFeedbackTime(Date feedbackTime) + { + this.feedbackTime = feedbackTime; + } + + public Date getFeedbackTime() + { + return feedbackTime; + } + 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("recordId", getRecordId()) + .append("workstationId", getWorkstationId()) + .append("workstationCode", getWorkstationCode()) + .append("workstationName", getWorkstationName()) + .append("workorderId", getWorkorderId()) + .append("workorderCode", getWorkorderCode()) + .append("workorderName", getWorkorderName()) + .append("taskId", getTaskId()) + .append("taskCode", getTaskCode()) + .append("quantity", getQuantity()) + .append("quantityFeedback", getQuantityFeedback()) + .append("quantityQualified", getQuantityQualified()) + .append("quantityUnquanlified", getQuantityUnquanlified()) + .append("userName", getUserName()) + .append("nickName", getNickName()) + .append("feedbackChannel", getFeedbackChannel()) + .append("feedbackTime", getFeedbackTime()) + .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/pro/mapper/ProFeedbackMapper.java b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProFeedbackMapper.java new file mode 100644 index 0000000..17dcbe7 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProFeedbackMapper.java @@ -0,0 +1,61 @@ +package com.ktg.mes.pro.mapper; + +import java.util.List; +import com.ktg.mes.pro.domain.ProFeedback; + +/** + * 生产报工记录Mapper接口 + * + * @author yinjinlu + * @date 2022-07-10 + */ +public interface ProFeedbackMapper +{ + /** + * 查询生产报工记录 + * + * @param recordId 生产报工记录主键 + * @return 生产报工记录 + */ + public ProFeedback selectProFeedbackByRecordId(Long recordId); + + /** + * 查询生产报工记录列表 + * + * @param proFeedback 生产报工记录 + * @return 生产报工记录集合 + */ + public List selectProFeedbackList(ProFeedback proFeedback); + + /** + * 新增生产报工记录 + * + * @param proFeedback 生产报工记录 + * @return 结果 + */ + public int insertProFeedback(ProFeedback proFeedback); + + /** + * 修改生产报工记录 + * + * @param proFeedback 生产报工记录 + * @return 结果 + */ + public int updateProFeedback(ProFeedback proFeedback); + + /** + * 删除生产报工记录 + * + * @param recordId 生产报工记录主键 + * @return 结果 + */ + public int deleteProFeedbackByRecordId(Long recordId); + + /** + * 批量删除生产报工记录 + * + * @param recordIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProFeedbackByRecordIds(Long[] recordIds); +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProFeedbackService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProFeedbackService.java new file mode 100644 index 0000000..5ea7b9a --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProFeedbackService.java @@ -0,0 +1,61 @@ +package com.ktg.mes.pro.service; + +import java.util.List; +import com.ktg.mes.pro.domain.ProFeedback; + +/** + * 生产报工记录Service接口 + * + * @author yinjinlu + * @date 2022-07-10 + */ +public interface IProFeedbackService +{ + /** + * 查询生产报工记录 + * + * @param recordId 生产报工记录主键 + * @return 生产报工记录 + */ + public ProFeedback selectProFeedbackByRecordId(Long recordId); + + /** + * 查询生产报工记录列表 + * + * @param proFeedback 生产报工记录 + * @return 生产报工记录集合 + */ + public List selectProFeedbackList(ProFeedback proFeedback); + + /** + * 新增生产报工记录 + * + * @param proFeedback 生产报工记录 + * @return 结果 + */ + public int insertProFeedback(ProFeedback proFeedback); + + /** + * 修改生产报工记录 + * + * @param proFeedback 生产报工记录 + * @return 结果 + */ + public int updateProFeedback(ProFeedback proFeedback); + + /** + * 批量删除生产报工记录 + * + * @param recordIds 需要删除的生产报工记录主键集合 + * @return 结果 + */ + public int deleteProFeedbackByRecordIds(Long[] recordIds); + + /** + * 删除生产报工记录信息 + * + * @param recordId 生产报工记录主键 + * @return 结果 + */ + public int deleteProFeedbackByRecordId(Long recordId); +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProFeedbackServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProFeedbackServiceImpl.java new file mode 100644 index 0000000..bb817e9 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProFeedbackServiceImpl.java @@ -0,0 +1,96 @@ +package com.ktg.mes.pro.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.pro.mapper.ProFeedbackMapper; +import com.ktg.mes.pro.domain.ProFeedback; +import com.ktg.mes.pro.service.IProFeedbackService; + +/** + * 生产报工记录Service业务层处理 + * + * @author yinjinlu + * @date 2022-07-10 + */ +@Service +public class ProFeedbackServiceImpl implements IProFeedbackService +{ + @Autowired + private ProFeedbackMapper proFeedbackMapper; + + /** + * 查询生产报工记录 + * + * @param recordId 生产报工记录主键 + * @return 生产报工记录 + */ + @Override + public ProFeedback selectProFeedbackByRecordId(Long recordId) + { + return proFeedbackMapper.selectProFeedbackByRecordId(recordId); + } + + /** + * 查询生产报工记录列表 + * + * @param proFeedback 生产报工记录 + * @return 生产报工记录 + */ + @Override + public List selectProFeedbackList(ProFeedback proFeedback) + { + return proFeedbackMapper.selectProFeedbackList(proFeedback); + } + + /** + * 新增生产报工记录 + * + * @param proFeedback 生产报工记录 + * @return 结果 + */ + @Override + public int insertProFeedback(ProFeedback proFeedback) + { + proFeedback.setCreateTime(DateUtils.getNowDate()); + return proFeedbackMapper.insertProFeedback(proFeedback); + } + + /** + * 修改生产报工记录 + * + * @param proFeedback 生产报工记录 + * @return 结果 + */ + @Override + public int updateProFeedback(ProFeedback proFeedback) + { + proFeedback.setUpdateTime(DateUtils.getNowDate()); + return proFeedbackMapper.updateProFeedback(proFeedback); + } + + /** + * 批量删除生产报工记录 + * + * @param recordIds 需要删除的生产报工记录主键 + * @return 结果 + */ + @Override + public int deleteProFeedbackByRecordIds(Long[] recordIds) + { + return proFeedbackMapper.deleteProFeedbackByRecordIds(recordIds); + } + + /** + * 删除生产报工记录信息 + * + * @param recordId 生产报工记录主键 + * @return 结果 + */ + @Override + public int deleteProFeedbackByRecordId(Long recordId) + { + return proFeedbackMapper.deleteProFeedbackByRecordId(recordId); + } +} diff --git a/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml new file mode 100644 index 0000000..ea39d27 --- /dev/null +++ b/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select record_id, workstation_id, workstation_code, workstation_name, workorder_id, workorder_code, workorder_name, task_id, task_code, quantity, quantity_feedback, quantity_qualified, quantity_unquanlified, user_name, nick_name, feedback_channel, feedback_time, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from pro_feedback + + + + + + + + insert into pro_feedback + + workstation_id, + workstation_code, + workstation_name, + workorder_id, + workorder_code, + workorder_name, + task_id, + task_code, + quantity, + quantity_feedback, + quantity_qualified, + quantity_unquanlified, + user_name, + nick_name, + feedback_channel, + feedback_time, + remark, + attr1, + attr2, + attr3, + attr4, + create_by, + create_time, + update_by, + update_time, + + + #{workstationId}, + #{workstationCode}, + #{workstationName}, + #{workorderId}, + #{workorderCode}, + #{workorderName}, + #{taskId}, + #{taskCode}, + #{quantity}, + #{quantityFeedback}, + #{quantityQualified}, + #{quantityUnquanlified}, + #{userName}, + #{nickName}, + #{feedbackChannel}, + #{feedbackTime}, + #{remark}, + #{attr1}, + #{attr2}, + #{attr3}, + #{attr4}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update pro_feedback + + workstation_id = #{workstationId}, + workstation_code = #{workstationCode}, + workstation_name = #{workstationName}, + workorder_id = #{workorderId}, + workorder_code = #{workorderCode}, + workorder_name = #{workorderName}, + task_id = #{taskId}, + task_code = #{taskCode}, + quantity = #{quantity}, + quantity_feedback = #{quantityFeedback}, + quantity_qualified = #{quantityQualified}, + quantity_unquanlified = #{quantityUnquanlified}, + user_name = #{userName}, + nick_name = #{nickName}, + feedback_channel = #{feedbackChannel}, + feedback_time = #{feedbackTime}, + remark = #{remark}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where record_id = #{recordId} + + + + delete from pro_feedback where record_id = #{recordId} + + + + delete from pro_feedback where record_id in + + #{recordId} + + + \ No newline at end of file