diff --git a/aucma-production/src/main/java/com/aucma/production/controller/AndonBoardConfigController.java b/aucma-production/src/main/java/com/aucma/production/controller/AndonBoardConfigController.java new file mode 100644 index 0000000..8e86acd --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/controller/AndonBoardConfigController.java @@ -0,0 +1,108 @@ +package com.aucma.production.controller; + +import com.aucma.common.annotation.Log; +import com.aucma.common.core.controller.BaseController; +import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.core.page.TableDataInfo; +import com.aucma.common.enums.BusinessType; +import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.poi.ExcelUtil; +import com.aucma.production.domain.AndonBoardConfig; +import com.aucma.production.service.IAndonBoardConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 安灯看板配置Controller + * + * @author Yinq + * @date 2025-10-28 + */ +@RestController +@RequestMapping("/production/andonBoardConfig" ) +public class AndonBoardConfigController extends BaseController { + @Autowired + private IAndonBoardConfigService andonBoardConfigService; + + /** + * 查询安灯看板配置列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonBoardConfig:list')" ) + @GetMapping("/list" ) + public TableDataInfo list(AndonBoardConfig andonBoardConfig) { + startPage(); + List list = andonBoardConfigService.selectAndonBoardConfigList(andonBoardConfig); + return getDataTable(list); + } + + /** + * 导出安灯看板配置列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonBoardConfig:export')" ) + @Log(title = "安灯看板配置" , businessType = BusinessType.EXPORT) + @PostMapping("/export" ) + public void export(HttpServletResponse response, AndonBoardConfig andonBoardConfig) { + List list = andonBoardConfigService.selectAndonBoardConfigList(andonBoardConfig); + ExcelUtil util = new ExcelUtil(AndonBoardConfig. class); + util.exportExcel(response, list, "安灯看板配置数据" ); + } + + /** + * 获取安灯看板配置详细信息 + */ + @PreAuthorize("@ss.hasPermi('production:andonBoardConfig:query')" ) + @GetMapping(value = "/{boardId}" ) + public AjaxResult getInfo(@PathVariable("boardId" ) Long boardId) { + return success(andonBoardConfigService.selectAndonBoardConfigByBoardId(boardId)); + } + + /** + * 新增安灯看板配置 + */ + @PreAuthorize("@ss.hasPermi('production:andonBoardConfig:add')" ) + @Log(title = "安灯看板配置" , businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AndonBoardConfig andonBoardConfig) { + andonBoardConfig.setCreateBy(getUsername()); + andonBoardConfig.setCreateTime(DateUtils.getNowDate()); + return toAjax(andonBoardConfigService.insertAndonBoardConfig(andonBoardConfig)); + } + + /** + * 修改安灯看板配置 + */ + @PreAuthorize("@ss.hasPermi('production:andonBoardConfig:edit')" ) + @Log(title = "安灯看板配置" , businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AndonBoardConfig andonBoardConfig) { + andonBoardConfig.setUpdateBy(getUsername()); + andonBoardConfig.setUpdateTime(DateUtils.getNowDate()); + return toAjax(andonBoardConfigService.updateAndonBoardConfig(andonBoardConfig)); + } + + /** + * 删除安灯看板配置 + */ + @PreAuthorize("@ss.hasPermi('production:andonBoardConfig:remove')" ) + @Log(title = "安灯看板配置" , businessType = BusinessType.DELETE) + @DeleteMapping("/{boardIds}" ) + public AjaxResult remove(@PathVariable Long[] boardIds) { + return toAjax(andonBoardConfigService.deleteAndonBoardConfigByBoardIds(boardIds)); + } + + + /** + * 查询安灯看板配置列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonBoardConfig:list')" ) + @GetMapping("/getAndonBoardConfigList" ) + public AjaxResult getAndonBoardConfigList(AndonBoardConfig andonBoardConfig) { + List list = andonBoardConfigService.selectAndonBoardConfigList(andonBoardConfig); + return success(list); + } + +} diff --git a/aucma-production/src/main/java/com/aucma/production/controller/AndonEventAssignmentController.java b/aucma-production/src/main/java/com/aucma/production/controller/AndonEventAssignmentController.java new file mode 100644 index 0000000..0955847 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/controller/AndonEventAssignmentController.java @@ -0,0 +1,108 @@ +package com.aucma.production.controller; + +import com.aucma.common.annotation.Log; +import com.aucma.common.core.controller.BaseController; +import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.core.page.TableDataInfo; +import com.aucma.common.enums.BusinessType; +import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.poi.ExcelUtil; +import com.aucma.production.domain.AndonEventAssignment; +import com.aucma.production.service.IAndonEventAssignmentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 安灯派工记录(派工即通知/待办)Controller + * + * @author Yinq + * @date 2025-10-28 + */ +@RestController +@RequestMapping("/production/andonEventAssignment" ) +public class AndonEventAssignmentController extends BaseController { + @Autowired + private IAndonEventAssignmentService andonEventAssignmentService; + + /** + * 查询安灯派工记录(派工即通知/待办)列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEventAssignment:list')" ) + @GetMapping("/list" ) + public TableDataInfo list(AndonEventAssignment andonEventAssignment) { + startPage(); + List list = andonEventAssignmentService.selectAndonEventAssignmentList(andonEventAssignment); + return getDataTable(list); + } + + /** + * 导出安灯派工记录(派工即通知/待办)列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEventAssignment:export')" ) + @Log(title = "安灯派工记录(派工即通知/待办)" , businessType = BusinessType.EXPORT) + @PostMapping("/export" ) + public void export(HttpServletResponse response, AndonEventAssignment andonEventAssignment) { + List list = andonEventAssignmentService.selectAndonEventAssignmentList(andonEventAssignment); + ExcelUtil util = new ExcelUtil(AndonEventAssignment. class); + util.exportExcel(response, list, "安灯派工记录(派工即通知/待办)数据" ); + } + + /** + * 获取安灯派工记录(派工即通知/待办)详细信息 + */ + @PreAuthorize("@ss.hasPermi('production:andonEventAssignment:query')" ) + @GetMapping(value = "/{assignmentId}" ) + public AjaxResult getInfo(@PathVariable("assignmentId" ) Long assignmentId) { + return success(andonEventAssignmentService.selectAndonEventAssignmentByAssignmentId(assignmentId)); + } + + /** + * 新增安灯派工记录(派工即通知/待办) + */ + @PreAuthorize("@ss.hasPermi('production:andonEventAssignment:add')" ) + @Log(title = "安灯派工记录(派工即通知/待办)" , businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AndonEventAssignment andonEventAssignment) { + andonEventAssignment.setCreateBy(getUsername()); + andonEventAssignment.setCreateTime(DateUtils.getNowDate()); + return toAjax(andonEventAssignmentService.insertAndonEventAssignment(andonEventAssignment)); + } + + /** + * 修改安灯派工记录(派工即通知/待办) + */ + @PreAuthorize("@ss.hasPermi('production:andonEventAssignment:edit')" ) + @Log(title = "安灯派工记录(派工即通知/待办)" , businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AndonEventAssignment andonEventAssignment) { + andonEventAssignment.setUpdateBy(getUsername()); + andonEventAssignment.setUpdateTime(DateUtils.getNowDate()); + return toAjax(andonEventAssignmentService.updateAndonEventAssignment(andonEventAssignment)); + } + + /** + * 删除安灯派工记录(派工即通知/待办) + */ + @PreAuthorize("@ss.hasPermi('production:andonEventAssignment:remove')" ) + @Log(title = "安灯派工记录(派工即通知/待办)" , businessType = BusinessType.DELETE) + @DeleteMapping("/{assignmentIds}" ) + public AjaxResult remove(@PathVariable Long[] assignmentIds) { + return toAjax(andonEventAssignmentService.deleteAndonEventAssignmentByAssignmentIds(assignmentIds)); + } + + + /** + * 查询安灯派工记录(派工即通知/待办)列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEventAssignment:list')" ) + @GetMapping("/getAndonEventAssignmentList" ) + public AjaxResult getAndonEventAssignmentList(AndonEventAssignment andonEventAssignment) { + List list = andonEventAssignmentService.selectAndonEventAssignmentList(andonEventAssignment); + return success(list); + } + +} diff --git a/aucma-production/src/main/java/com/aucma/production/controller/AndonEventController.java b/aucma-production/src/main/java/com/aucma/production/controller/AndonEventController.java new file mode 100644 index 0000000..011c281 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/controller/AndonEventController.java @@ -0,0 +1,148 @@ +package com.aucma.production.controller; + +import com.aucma.common.annotation.Log; +import com.aucma.common.core.controller.BaseController; +import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.core.page.TableDataInfo; +import com.aucma.common.enums.BusinessType; +import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.poi.ExcelUtil; +import com.aucma.production.domain.AndonEvent; +import com.aucma.production.service.IAndonEventService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 安灯事件Controller + * + * @author Yinq + * @date 2025-10-28 + */ +@RestController +@RequestMapping("/production/andonEvent" ) +public class AndonEventController extends BaseController { + @Autowired + private IAndonEventService andonEventService; + + /** + * 查询安灯事件列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:list')" ) + @GetMapping("/list" ) + public TableDataInfo list(AndonEvent andonEvent) { + startPage(); + List list = andonEventService.selectAndonEventList(andonEvent); + return getDataTable(list); + } + + /** + * 导出安灯事件列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:export')" ) + @Log(title = "安灯事件" , businessType = BusinessType.EXPORT) + @PostMapping("/export" ) + public void export(HttpServletResponse response, AndonEvent andonEvent) { + List list = andonEventService.selectAndonEventList(andonEvent); + ExcelUtil util = new ExcelUtil(AndonEvent. class); + util.exportExcel(response, list, "安灯事件数据" ); + } + + /** + * 获取安灯事件详细信息 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:query')" ) + @GetMapping(value = "/{eventId}" ) + public AjaxResult getInfo(@PathVariable("eventId" ) Long eventId) { + return success(andonEventService.selectAndonEventByEventId(eventId)); + } + + /** + * 新增安灯事件 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:add')" ) + @Log(title = "安灯事件" , businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AndonEvent andonEvent) { + andonEvent.setCreateBy(getUsername()); + andonEvent.setCreateTime(DateUtils.getNowDate()); + return toAjax(andonEventService.insertAndonEvent(andonEvent)); + } + + /** + * 修改安灯事件 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:edit')" ) + @Log(title = "安灯事件" , businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AndonEvent andonEvent) { + andonEvent.setUpdateBy(getUsername()); + andonEvent.setUpdateTime(DateUtils.getNowDate()); + return toAjax(andonEventService.updateAndonEvent(andonEvent)); + } + + /** + * 删除安灯事件 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:remove')" ) + @Log(title = "安灯事件" , businessType = BusinessType.DELETE) + @DeleteMapping("/{eventIds}" ) + public AjaxResult remove(@PathVariable Long[] eventIds) { + return toAjax(andonEventService.deleteAndonEventByEventIds(eventIds)); + } + + + /** + * 查询安灯事件列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:list')" ) + @GetMapping("/getAndonEventList" ) + public AjaxResult getAndonEventList(AndonEvent andonEvent) { + List list = andonEventService.selectAndonEventList(andonEvent); + return success(list); + } + + /** + * 确认安灯事件 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:edit')" ) + @Log(title = "安灯事件确认" , businessType = BusinessType.UPDATE) + @PostMapping("/acknowledge/{eventId}" ) + public AjaxResult acknowledge(@PathVariable Long eventId) { + return toAjax(andonEventService.acknowledgeEvent(eventId, getUsername())); + } + + /** + * 开始处理安灯事件 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:edit')" ) + @Log(title = "安灯事件开始处理" , businessType = BusinessType.UPDATE) + @PostMapping("/startProcess/{eventId}" ) + public AjaxResult startProcess(@PathVariable Long eventId) { + return toAjax(andonEventService.startProcessEvent(eventId, getUsername())); + } + + /** + * 完成安灯事件 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:edit')" ) + @Log(title = "安灯事件完成" , businessType = BusinessType.UPDATE) + @PostMapping("/complete/{eventId}" ) + public AjaxResult complete(@PathVariable Long eventId, @RequestParam(required = false) String resolution) { + return toAjax(andonEventService.completeEvent(eventId, resolution, getUsername())); + } + + /** + * 取消安灯事件 + */ + @PreAuthorize("@ss.hasPermi('production:andonEvent:edit')" ) + @Log(title = "安灯事件取消" , businessType = BusinessType.UPDATE) + @PostMapping("/cancel/{eventId}" ) + public AjaxResult cancel(@PathVariable Long eventId, @RequestParam(required = false) String cancelReason) { + return toAjax(andonEventService.cancelEvent(eventId, cancelReason, getUsername())); + } + +} diff --git a/aucma-production/src/main/java/com/aucma/production/controller/AndonEventLogController.java b/aucma-production/src/main/java/com/aucma/production/controller/AndonEventLogController.java new file mode 100644 index 0000000..93ced14 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/controller/AndonEventLogController.java @@ -0,0 +1,108 @@ +package com.aucma.production.controller; + +import com.aucma.common.annotation.Log; +import com.aucma.common.core.controller.BaseController; +import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.core.page.TableDataInfo; +import com.aucma.common.enums.BusinessType; +import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.poi.ExcelUtil; +import com.aucma.production.domain.AndonEventLog; +import com.aucma.production.service.IAndonEventLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 安灯事件操作日志(审计与追踪)Controller + * + * @author Yinq + * @date 2025-10-28 + */ +@RestController +@RequestMapping("/production/andonEventLog" ) +public class AndonEventLogController extends BaseController { + @Autowired + private IAndonEventLogService andonEventLogService; + + /** + * 查询安灯事件操作日志(审计与追踪)列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEventLog:list')" ) + @GetMapping("/list" ) + public TableDataInfo list(AndonEventLog andonEventLog) { + startPage(); + List list = andonEventLogService.selectAndonEventLogList(andonEventLog); + return getDataTable(list); + } + + /** + * 导出安灯事件操作日志(审计与追踪)列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEventLog:export')" ) + @Log(title = "安灯事件操作日志(审计与追踪)" , businessType = BusinessType.EXPORT) + @PostMapping("/export" ) + public void export(HttpServletResponse response, AndonEventLog andonEventLog) { + List list = andonEventLogService.selectAndonEventLogList(andonEventLog); + ExcelUtil util = new ExcelUtil(AndonEventLog. class); + util.exportExcel(response, list, "安灯事件操作日志(审计与追踪)数据" ); + } + + /** + * 获取安灯事件操作日志(审计与追踪)详细信息 + */ + @PreAuthorize("@ss.hasPermi('production:andonEventLog:query')" ) + @GetMapping(value = "/{logId}" ) + public AjaxResult getInfo(@PathVariable("logId" ) Long logId) { + return success(andonEventLogService.selectAndonEventLogByLogId(logId)); + } + + /** + * 新增安灯事件操作日志(审计与追踪) + */ + @PreAuthorize("@ss.hasPermi('production:andonEventLog:add')" ) + @Log(title = "安灯事件操作日志(审计与追踪)" , businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AndonEventLog andonEventLog) { + andonEventLog.setCreateBy(getUsername()); + andonEventLog.setCreateTime(DateUtils.getNowDate()); + return toAjax(andonEventLogService.insertAndonEventLog(andonEventLog)); + } + + /** + * 修改安灯事件操作日志(审计与追踪) + */ + @PreAuthorize("@ss.hasPermi('production:andonEventLog:edit')" ) + @Log(title = "安灯事件操作日志(审计与追踪)" , businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AndonEventLog andonEventLog) { + andonEventLog.setUpdateBy(getUsername()); + andonEventLog.setUpdateTime(DateUtils.getNowDate()); + return toAjax(andonEventLogService.updateAndonEventLog(andonEventLog)); + } + + /** + * 删除安灯事件操作日志(审计与追踪) + */ + @PreAuthorize("@ss.hasPermi('production:andonEventLog:remove')" ) + @Log(title = "安灯事件操作日志(审计与追踪)" , businessType = BusinessType.DELETE) + @DeleteMapping("/{logIds}" ) + public AjaxResult remove(@PathVariable Long[] logIds) { + return toAjax(andonEventLogService.deleteAndonEventLogByLogIds(logIds)); + } + + + /** + * 查询安灯事件操作日志(审计与追踪)列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonEventLog:list')" ) + @GetMapping("/getAndonEventLogList" ) + public AjaxResult getAndonEventLogList(AndonEventLog andonEventLog) { + List list = andonEventLogService.selectAndonEventLogList(andonEventLog); + return success(list); + } + +} diff --git a/aucma-production/src/main/java/com/aucma/production/controller/AndonRuleController.java b/aucma-production/src/main/java/com/aucma/production/controller/AndonRuleController.java new file mode 100644 index 0000000..6a356d0 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/controller/AndonRuleController.java @@ -0,0 +1,108 @@ +package com.aucma.production.controller; + +import com.aucma.common.annotation.Log; +import com.aucma.common.core.controller.BaseController; +import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.core.page.TableDataInfo; +import com.aucma.common.enums.BusinessType; +import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.poi.ExcelUtil; +import com.aucma.production.domain.AndonRule; +import com.aucma.production.service.IAndonRuleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 安灯规则配置Controller + * + * @author Yinq + * @date 2025-10-28 + */ +@RestController +@RequestMapping("/production/andonRule" ) +public class AndonRuleController extends BaseController { + @Autowired + private IAndonRuleService andonRuleService; + + /** + * 查询安灯规则配置列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonRule:list')" ) + @GetMapping("/list" ) + public TableDataInfo list(AndonRule andonRule) { + startPage(); + List list = andonRuleService.selectAndonRuleList(andonRule); + return getDataTable(list); + } + + /** + * 导出安灯规则配置列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonRule:export')" ) + @Log(title = "安灯规则配置" , businessType = BusinessType.EXPORT) + @PostMapping("/export" ) + public void export(HttpServletResponse response, AndonRule andonRule) { + List list = andonRuleService.selectAndonRuleList(andonRule); + ExcelUtil util = new ExcelUtil(AndonRule. class); + util.exportExcel(response, list, "安灯规则配置数据" ); + } + + /** + * 获取安灯规则配置详细信息 + */ + @PreAuthorize("@ss.hasPermi('production:andonRule:query')" ) + @GetMapping(value = "/{ruleId}" ) + public AjaxResult getInfo(@PathVariable("ruleId" ) Long ruleId) { + return success(andonRuleService.selectAndonRuleByRuleId(ruleId)); + } + + /** + * 新增安灯规则配置 + */ + @PreAuthorize("@ss.hasPermi('production:andonRule:add')" ) + @Log(title = "安灯规则配置" , businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AndonRule andonRule) { + andonRule.setCreateBy(getUsername()); + andonRule.setCreateTime(DateUtils.getNowDate()); + return toAjax(andonRuleService.insertAndonRule(andonRule)); + } + + /** + * 修改安灯规则配置 + */ + @PreAuthorize("@ss.hasPermi('production:andonRule:edit')" ) + @Log(title = "安灯规则配置" , businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AndonRule andonRule) { + andonRule.setUpdateBy(getUsername()); + andonRule.setUpdateTime(DateUtils.getNowDate()); + return toAjax(andonRuleService.updateAndonRule(andonRule)); + } + + /** + * 删除安灯规则配置 + */ + @PreAuthorize("@ss.hasPermi('production:andonRule:remove')" ) + @Log(title = "安灯规则配置" , businessType = BusinessType.DELETE) + @DeleteMapping("/{ruleIds}" ) + public AjaxResult remove(@PathVariable Long[] ruleIds) { + return toAjax(andonRuleService.deleteAndonRuleByRuleIds(ruleIds)); + } + + + /** + * 查询安灯规则配置列表 + */ + @PreAuthorize("@ss.hasPermi('production:andonRule:list')" ) + @GetMapping("/getAndonRuleList" ) + public AjaxResult getAndonRuleList(AndonRule andonRule) { + List list = andonRuleService.selectAndonRuleList(andonRule); + return success(list); + } + +} diff --git a/aucma-production/src/main/java/com/aucma/production/domain/AndonBoardConfig.java b/aucma-production/src/main/java/com/aucma/production/domain/AndonBoardConfig.java new file mode 100644 index 0000000..761aad9 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/domain/AndonBoardConfig.java @@ -0,0 +1,140 @@ +package com.aucma.production.domain; + +import com.aucma.common.annotation.Excel; +import com.aucma.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 安灯看板配置对象 andon_board_config + * + * @author Yinq + * @date 2025-10-28 + */ +public class AndonBoardConfig extends BaseEntity + { +private static final long serialVersionUID=1L; + + /** 主键ID */ + private Long boardId; + + /** 看板编码 */ + @Excel(name = "看板编码") + private String boardCode; + + /** 看板名称 */ + @Excel(name = "看板名称") + private String boardName; + + /** 产品线编码 */ + @Excel(name = "产品线编码") + private String productLineCode; + + /** 工位/工序编码(作用域) */ + @Excel(name = "工位/工序编码", readConverterExp = "作=用域") + private String stationCode; + + /** 看板展示字段配置(JSON) */ + @Excel(name = "看板展示字段配置", readConverterExp = "J=SON") + private String displayFields; + + /** 刷新间隔(秒) */ + @Excel(name = "刷新间隔", readConverterExp = "秒=") + private Long refreshIntervalSec; + + /** 是否有效(1有效/0无效) */ + @Excel(name = "是否有效", readConverterExp = "1=有效/0无效") + private String isFlag; + + public void setBoardId(Long boardId) + { + this.boardId = boardId; + } + + public Long getBoardId() + { + return boardId; + } + public void setBoardCode(String boardCode) + { + this.boardCode = boardCode; + } + + public String getBoardCode() + { + return boardCode; + } + public void setBoardName(String boardName) + { + this.boardName = boardName; + } + + public String getBoardName() + { + return boardName; + } + public void setProductLineCode(String productLineCode) + { + this.productLineCode = productLineCode; + } + + public String getProductLineCode() + { + return productLineCode; + } + public void setStationCode(String stationCode) + { + this.stationCode = stationCode; + } + + public String getStationCode() + { + return stationCode; + } + public void setDisplayFields(String displayFields) + { + this.displayFields = displayFields; + } + + public String getDisplayFields() + { + return displayFields; + } + public void setRefreshIntervalSec(Long refreshIntervalSec) + { + this.refreshIntervalSec = refreshIntervalSec; + } + + public Long getRefreshIntervalSec() + { + return refreshIntervalSec; + } + public void setIsFlag(String isFlag) + { + this.isFlag = isFlag; + } + + public String getIsFlag() + { + return isFlag; + } + +@Override +public String toString(){ + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("boardId",getBoardId()) + .append("boardCode",getBoardCode()) + .append("boardName",getBoardName()) + .append("productLineCode",getProductLineCode()) + .append("stationCode",getStationCode()) + .append("displayFields",getDisplayFields()) + .append("refreshIntervalSec",getRefreshIntervalSec()) + .append("isFlag",getIsFlag()) + .append("remark",getRemark()) + .append("createBy",getCreateBy()) + .append("createTime",getCreateTime()) + .append("updateBy",getUpdateBy()) + .append("updateTime",getUpdateTime()) + .toString(); + } + } diff --git a/aucma-production/src/main/java/com/aucma/production/domain/AndonEvent.java b/aucma-production/src/main/java/com/aucma/production/domain/AndonEvent.java new file mode 100644 index 0000000..57450d6 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/domain/AndonEvent.java @@ -0,0 +1,401 @@ +package com.aucma.production.domain; + +import com.aucma.common.annotation.Excel; +import com.aucma.common.core.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; + +/** + * 安灯事件对象 andon_event + * + * @author Yinq + * @date 2025-10-28 + */ +public class AndonEvent extends BaseEntity + { +private static final long serialVersionUID=1L; + + /** 主键ID */ + private Long eventId; + + /** 安灯呼叫单号 */ + @Excel(name = "安灯呼叫单号") + private String callCode; + + /** 呼叫类型编码(如质量/设备/物料/安全等) */ + @Excel(name = "呼叫类型编码", readConverterExp = "如=质量/设备/物料/安全等") + private String callTypeCode; + + /** 触发源类型:工位/设备/报警/手动 */ + @Excel(name = "触发源类型:工位/设备/报警/手动") + private String sourceType; + + /** 触发源引用ID(设备/报警/其他) */ + @Excel(name = "触发源引用ID", readConverterExp = "设=备/报警/其他") + private Long sourceRefId; + + /** 产品线编码 */ + @Excel(name = "产品线编码") + private String productLineCode; + + /** 工位/工序编码 */ + @Excel(name = "工位/工序编码") + private String stationCode; + + /** 班组编码 */ + @Excel(name = "班组编码") + private String teamCode; + + /** 工单号 */ + @Excel(name = "工单号") + private String orderCode; + + /** 物料编码 */ + @Excel(name = "物料编码") + private String materialCode; + + /** 设备ID */ + @Excel(name = "设备ID") + private Long deviceId; + + /** 设备编码 */ + @Excel(name = "设备编码") + private String deviceCode; + + /** 优先级(1最高,默认3) */ + @Excel(name = "优先级", readConverterExp = "1=最高,默认3") + private Long priority; + + /** 事件状态(待处理/处理中/已解决/已取消) */ + @Excel(name = "事件状态", readConverterExp = "待=处理/处理中/已解决/已取消") + private String eventStatus; + + /** 呼叫描述 */ + @Excel(name = "呼叫描述") + private String description; + + /** 确认人 */ + @Excel(name = "确认人") + private String ackBy; + + /** 确认时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "确认时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date ackTime; + + /** 开始处理时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "开始处理时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date responseStartTime; + + /** 处理完成/解决时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "处理完成/解决时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date responseEndTime; + + /** 处理/解决措施 */ + @Excel(name = "处理/解决措施") + private String resolution; + + /** 取消原因 */ + @Excel(name = "取消原因") + private String cancelReason; + + /** 升级级别 */ + @Excel(name = "升级级别") + private Long escalateLevel; + + /** 升级时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "升级时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date escalateTime; + + /** 确认截止时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "确认截止时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date ackDeadline; + + /** 解决截止时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "解决截止时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date resolveDeadline; + + /** 是否有效(1有效/0无效) */ + @Excel(name = "是否有效", readConverterExp = "1=有效/0无效") + private String isFlag; + + public void setEventId(Long eventId) + { + this.eventId = eventId; + } + + public Long getEventId() + { + return eventId; + } + public void setCallCode(String callCode) + { + this.callCode = callCode; + } + + public String getCallCode() + { + return callCode; + } + public void setCallTypeCode(String callTypeCode) + { + this.callTypeCode = callTypeCode; + } + + public String getCallTypeCode() + { + return callTypeCode; + } + public void setSourceType(String sourceType) + { + this.sourceType = sourceType; + } + + public String getSourceType() + { + return sourceType; + } + public void setSourceRefId(Long sourceRefId) + { + this.sourceRefId = sourceRefId; + } + + public Long getSourceRefId() + { + return sourceRefId; + } + public void setProductLineCode(String productLineCode) + { + this.productLineCode = productLineCode; + } + + public String getProductLineCode() + { + return productLineCode; + } + public void setStationCode(String stationCode) + { + this.stationCode = stationCode; + } + + public String getStationCode() + { + return stationCode; + } + public void setTeamCode(String teamCode) + { + this.teamCode = teamCode; + } + + public String getTeamCode() + { + return teamCode; + } + public void setOrderCode(String orderCode) + { + this.orderCode = orderCode; + } + + public String getOrderCode() + { + return orderCode; + } + public void setMaterialCode(String materialCode) + { + this.materialCode = materialCode; + } + + public String getMaterialCode() + { + return materialCode; + } + public void setDeviceId(Long deviceId) + { + this.deviceId = deviceId; + } + + public Long getDeviceId() + { + return deviceId; + } + public void setDeviceCode(String deviceCode) + { + this.deviceCode = deviceCode; + } + + public String getDeviceCode() + { + return deviceCode; + } + public void setPriority(Long priority) + { + this.priority = priority; + } + + public Long getPriority() + { + return priority; + } + public void setEventStatus(String eventStatus) + { + this.eventStatus = eventStatus; + } + + public String getEventStatus() + { + return eventStatus; + } + public void setDescription(String description) + { + this.description = description; + } + + public String getDescription() + { + return description; + } + public void setAckBy(String ackBy) + { + this.ackBy = ackBy; + } + + public String getAckBy() + { + return ackBy; + } + public void setAckTime(Date ackTime) + { + this.ackTime = ackTime; + } + + public Date getAckTime() + { + return ackTime; + } + public void setResponseStartTime(Date responseStartTime) + { + this.responseStartTime = responseStartTime; + } + + public Date getResponseStartTime() + { + return responseStartTime; + } + public void setResponseEndTime(Date responseEndTime) + { + this.responseEndTime = responseEndTime; + } + + public Date getResponseEndTime() + { + return responseEndTime; + } + public void setResolution(String resolution) + { + this.resolution = resolution; + } + + public String getResolution() + { + return resolution; + } + public void setCancelReason(String cancelReason) + { + this.cancelReason = cancelReason; + } + + public String getCancelReason() + { + return cancelReason; + } + public void setEscalateLevel(Long escalateLevel) + { + this.escalateLevel = escalateLevel; + } + + public Long getEscalateLevel() + { + return escalateLevel; + } + public void setEscalateTime(Date escalateTime) + { + this.escalateTime = escalateTime; + } + + public Date getEscalateTime() + { + return escalateTime; + } + public void setAckDeadline(Date ackDeadline) + { + this.ackDeadline = ackDeadline; + } + + public Date getAckDeadline() + { + return ackDeadline; + } + public void setResolveDeadline(Date resolveDeadline) + { + this.resolveDeadline = resolveDeadline; + } + + public Date getResolveDeadline() + { + return resolveDeadline; + } + public void setIsFlag(String isFlag) + { + this.isFlag = isFlag; + } + + public String getIsFlag() + { + return isFlag; + } + +@Override +public String toString(){ + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("eventId",getEventId()) + .append("callCode",getCallCode()) + .append("callTypeCode",getCallTypeCode()) + .append("sourceType",getSourceType()) + .append("sourceRefId",getSourceRefId()) + .append("productLineCode",getProductLineCode()) + .append("stationCode",getStationCode()) + .append("teamCode",getTeamCode()) + .append("orderCode",getOrderCode()) + .append("materialCode",getMaterialCode()) + .append("deviceId",getDeviceId()) + .append("deviceCode",getDeviceCode()) + .append("priority",getPriority()) + .append("eventStatus",getEventStatus()) + .append("description",getDescription()) + .append("ackBy",getAckBy()) + .append("ackTime",getAckTime()) + .append("responseStartTime",getResponseStartTime()) + .append("responseEndTime",getResponseEndTime()) + .append("resolution",getResolution()) + .append("cancelReason",getCancelReason()) + .append("escalateLevel",getEscalateLevel()) + .append("escalateTime",getEscalateTime()) + .append("ackDeadline",getAckDeadline()) + .append("resolveDeadline",getResolveDeadline()) + .append("isFlag",getIsFlag()) + .append("remark",getRemark()) + .append("createBy",getCreateBy()) + .append("createTime",getCreateTime()) + .append("updateBy",getUpdateBy()) + .append("updateTime",getUpdateTime()) + .toString(); + } + } diff --git a/aucma-production/src/main/java/com/aucma/production/domain/AndonEventAssignment.java b/aucma-production/src/main/java/com/aucma/production/domain/AndonEventAssignment.java new file mode 100644 index 0000000..99fbec0 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/domain/AndonEventAssignment.java @@ -0,0 +1,188 @@ +package com.aucma.production.domain; + +import com.aucma.common.annotation.Excel; +import com.aucma.common.core.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; + +/** + * 安灯派工记录(派工即通知/待办)对象 andon_event_assignment + * + * @author Yinq + * @date 2025-10-28 + */ +public class AndonEventAssignment extends BaseEntity + { +private static final long serialVersionUID=1L; + + /** 主键ID */ + private Long assignmentId; + + /** 事件ID */ + @Excel(name = "事件ID") + private Long eventId; + + /** 被分配用户ID */ + @Excel(name = "被分配用户ID") + private Long assigneeUserId; + + /** 被分配用户姓名 */ + @Excel(name = "被分配用户姓名") + private String assigneeUserName; + + /** 被分配角色编码 */ + @Excel(name = "被分配角色编码") + private String assigneeRoleKey; + + /** 被分配班组编码 */ + @Excel(name = "被分配班组编码") + private String assigneeTeamCode; + + /** 分配时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "分配时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date assignedTime; + + /** 接单时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "接单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date acceptTime; + + /** 完成时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + /** 派工状态(分配/接受/拒绝/完成/已取消) */ + @Excel(name = "派工状态", readConverterExp = "分=配/接受/拒绝/完成/已取消") + private String status; + + /** 是否有效(1有效/0无效) */ + @Excel(name = "是否有效", readConverterExp = "1=有效/0无效") + private String isFlag; + + public void setAssignmentId(Long assignmentId) + { + this.assignmentId = assignmentId; + } + + public Long getAssignmentId() + { + return assignmentId; + } + public void setEventId(Long eventId) + { + this.eventId = eventId; + } + + public Long getEventId() + { + return eventId; + } + public void setAssigneeUserId(Long assigneeUserId) + { + this.assigneeUserId = assigneeUserId; + } + + public Long getAssigneeUserId() + { + return assigneeUserId; + } + public void setAssigneeUserName(String assigneeUserName) + { + this.assigneeUserName = assigneeUserName; + } + + public String getAssigneeUserName() + { + return assigneeUserName; + } + public void setAssigneeRoleKey(String assigneeRoleKey) + { + this.assigneeRoleKey = assigneeRoleKey; + } + + public String getAssigneeRoleKey() + { + return assigneeRoleKey; + } + public void setAssigneeTeamCode(String assigneeTeamCode) + { + this.assigneeTeamCode = assigneeTeamCode; + } + + public String getAssigneeTeamCode() + { + return assigneeTeamCode; + } + public void setAssignedTime(Date assignedTime) + { + this.assignedTime = assignedTime; + } + + public Date getAssignedTime() + { + return assignedTime; + } + public void setAcceptTime(Date acceptTime) + { + this.acceptTime = acceptTime; + } + + public Date getAcceptTime() + { + return acceptTime; + } + public void setFinishTime(Date finishTime) + { + this.finishTime = finishTime; + } + + public Date getFinishTime() + { + return finishTime; + } + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + public void setIsFlag(String isFlag) + { + this.isFlag = isFlag; + } + + public String getIsFlag() + { + return isFlag; + } + +@Override +public String toString(){ + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("assignmentId",getAssignmentId()) + .append("eventId",getEventId()) + .append("assigneeUserId",getAssigneeUserId()) + .append("assigneeUserName",getAssigneeUserName()) + .append("assigneeRoleKey",getAssigneeRoleKey()) + .append("assigneeTeamCode",getAssigneeTeamCode()) + .append("assignedTime",getAssignedTime()) + .append("acceptTime",getAcceptTime()) + .append("finishTime",getFinishTime()) + .append("status",getStatus()) + .append("isFlag",getIsFlag()) + .append("remark",getRemark()) + .append("createBy",getCreateBy()) + .append("createTime",getCreateTime()) + .append("updateBy",getUpdateBy()) + .append("updateTime",getUpdateTime()) + .toString(); + } + } diff --git a/aucma-production/src/main/java/com/aucma/production/domain/AndonEventLog.java b/aucma-production/src/main/java/com/aucma/production/domain/AndonEventLog.java new file mode 100644 index 0000000..bafc982 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/domain/AndonEventLog.java @@ -0,0 +1,130 @@ +package com.aucma.production.domain; + +import com.aucma.common.annotation.Excel; +import com.aucma.common.core.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; + +/** + * 安灯事件操作日志(审计与追踪)对象 andon_event_log + * + * @author Yinq + * @date 2025-10-28 + */ +public class AndonEventLog extends BaseEntity + { +private static final long serialVersionUID=1L; + + /** 主键ID */ + private Long logId; + + /** 事件ID */ + @Excel(name = "事件ID") + private Long eventId; + + /** 操作类型(创建/确认/分配/升级/解决/取消/评论) */ + @Excel(name = "操作类型", readConverterExp = "创=建/确认/分配/升级/解决/取消/评论") + private String operation; + + /** 操作内容 */ + @Excel(name = "操作内容") + private String content; + + /** 操作人ID */ + @Excel(name = "操作人ID") + private Long operatorUserId; + + /** 操作人姓名 */ + @Excel(name = "操作人姓名") + private String operatorUserName; + + /** 操作时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operationTime; + + public void setLogId(Long logId) + { + this.logId = logId; + } + + public Long getLogId() + { + return logId; + } + public void setEventId(Long eventId) + { + this.eventId = eventId; + } + + public Long getEventId() + { + return eventId; + } + public void setOperation(String operation) + { + this.operation = operation; + } + + public String getOperation() + { + return operation; + } + public void setContent(String content) + { + this.content = content; + } + + public String getContent() + { + return content; + } + public void setOperatorUserId(Long operatorUserId) + { + this.operatorUserId = operatorUserId; + } + + public Long getOperatorUserId() + { + return operatorUserId; + } + public void setOperatorUserName(String operatorUserName) + { + this.operatorUserName = operatorUserName; + } + + public String getOperatorUserName() + { + return operatorUserName; + } + public void setOperationTime(Date operationTime) + { + this.operationTime = operationTime; + } + + public Date getOperationTime() + { + return operationTime; + } + +@Override +public String toString(){ + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("logId",getLogId()) + .append("eventId",getEventId()) + .append("operation",getOperation()) + .append("content",getContent()) + .append("operatorUserId",getOperatorUserId()) + .append("operatorUserName",getOperatorUserName()) + .append("operationTime",getOperationTime()) + .append("remark",getRemark()) + .append("createBy",getCreateBy()) + .append("createTime",getCreateTime()) + .append("updateBy",getUpdateBy()) + .append("updateTime",getUpdateTime()) + .toString(); + } + } diff --git a/aucma-production/src/main/java/com/aucma/production/mapper/AndonBoardConfigMapper.java b/aucma-production/src/main/java/com/aucma/production/mapper/AndonBoardConfigMapper.java new file mode 100644 index 0000000..a4528ce --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/mapper/AndonBoardConfigMapper.java @@ -0,0 +1,62 @@ +package com.aucma.production.mapper; + +import com.aucma.production.domain.AndonBoardConfig; + +import java.util.List; + +/** + * 安灯看板配置Mapper接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface AndonBoardConfigMapper +{ + /** + * 查询安灯看板配置 + * + * @param boardId 安灯看板配置主键 + * @return 安灯看板配置 + */ + public AndonBoardConfig selectAndonBoardConfigByBoardId(Long boardId); + + /** + * 查询安灯看板配置列表 + * + * @param andonBoardConfig 安灯看板配置 + * @return 安灯看板配置集合 + */ + public List selectAndonBoardConfigList(AndonBoardConfig andonBoardConfig); + + /** + * 新增安灯看板配置 + * + * @param andonBoardConfig 安灯看板配置 + * @return 结果 + */ + public int insertAndonBoardConfig(AndonBoardConfig andonBoardConfig); + + /** + * 修改安灯看板配置 + * + * @param andonBoardConfig 安灯看板配置 + * @return 结果 + */ + public int updateAndonBoardConfig(AndonBoardConfig andonBoardConfig); + + /** + * 删除安灯看板配置 + * + * @param boardId 安灯看板配置主键 + * @return 结果 + */ + public int deleteAndonBoardConfigByBoardId(Long boardId); + + /** + * 批量删除安灯看板配置 + * + * @param boardIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAndonBoardConfigByBoardIds(Long[] boardIds); +} diff --git a/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventAssignmentMapper.java b/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventAssignmentMapper.java new file mode 100644 index 0000000..619b61e --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventAssignmentMapper.java @@ -0,0 +1,62 @@ +package com.aucma.production.mapper; + +import com.aucma.production.domain.AndonEventAssignment; + +import java.util.List; + +/** + * 安灯派工记录(派工即通知/待办)Mapper接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface AndonEventAssignmentMapper +{ + /** + * 查询安灯派工记录(派工即通知/待办) + * + * @param assignmentId 安灯派工记录(派工即通知/待办)主键 + * @return 安灯派工记录(派工即通知/待办) + */ + public AndonEventAssignment selectAndonEventAssignmentByAssignmentId(Long assignmentId); + + /** + * 查询安灯派工记录(派工即通知/待办)列表 + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 安灯派工记录(派工即通知/待办)集合 + */ + public List selectAndonEventAssignmentList(AndonEventAssignment andonEventAssignment); + + /** + * 新增安灯派工记录(派工即通知/待办) + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 结果 + */ + public int insertAndonEventAssignment(AndonEventAssignment andonEventAssignment); + + /** + * 修改安灯派工记录(派工即通知/待办) + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 结果 + */ + public int updateAndonEventAssignment(AndonEventAssignment andonEventAssignment); + + /** + * 删除安灯派工记录(派工即通知/待办) + * + * @param assignmentId 安灯派工记录(派工即通知/待办)主键 + * @return 结果 + */ + public int deleteAndonEventAssignmentByAssignmentId(Long assignmentId); + + /** + * 批量删除安灯派工记录(派工即通知/待办) + * + * @param assignmentIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAndonEventAssignmentByAssignmentIds(Long[] assignmentIds); +} diff --git a/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventLogMapper.java b/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventLogMapper.java new file mode 100644 index 0000000..3f5e0d6 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventLogMapper.java @@ -0,0 +1,62 @@ +package com.aucma.production.mapper; + +import com.aucma.production.domain.AndonEventLog; + +import java.util.List; + +/** + * 安灯事件操作日志(审计与追踪)Mapper接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface AndonEventLogMapper +{ + /** + * 查询安灯事件操作日志(审计与追踪) + * + * @param logId 安灯事件操作日志(审计与追踪)主键 + * @return 安灯事件操作日志(审计与追踪) + */ + public AndonEventLog selectAndonEventLogByLogId(Long logId); + + /** + * 查询安灯事件操作日志(审计与追踪)列表 + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 安灯事件操作日志(审计与追踪)集合 + */ + public List selectAndonEventLogList(AndonEventLog andonEventLog); + + /** + * 新增安灯事件操作日志(审计与追踪) + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 结果 + */ + public int insertAndonEventLog(AndonEventLog andonEventLog); + + /** + * 修改安灯事件操作日志(审计与追踪) + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 结果 + */ + public int updateAndonEventLog(AndonEventLog andonEventLog); + + /** + * 删除安灯事件操作日志(审计与追踪) + * + * @param logId 安灯事件操作日志(审计与追踪)主键 + * @return 结果 + */ + public int deleteAndonEventLogByLogId(Long logId); + + /** + * 批量删除安灯事件操作日志(审计与追踪) + * + * @param logIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAndonEventLogByLogIds(Long[] logIds); +} diff --git a/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventMapper.java b/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventMapper.java new file mode 100644 index 0000000..5574ac0 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/mapper/AndonEventMapper.java @@ -0,0 +1,62 @@ +package com.aucma.production.mapper; + +import com.aucma.production.domain.AndonEvent; + +import java.util.List; + +/** + * 安灯事件Mapper接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface AndonEventMapper +{ + /** + * 查询安灯事件 + * + * @param eventId 安灯事件主键 + * @return 安灯事件 + */ + public AndonEvent selectAndonEventByEventId(Long eventId); + + /** + * 查询安灯事件列表 + * + * @param andonEvent 安灯事件 + * @return 安灯事件集合 + */ + public List selectAndonEventList(AndonEvent andonEvent); + + /** + * 新增安灯事件 + * + * @param andonEvent 安灯事件 + * @return 结果 + */ + public int insertAndonEvent(AndonEvent andonEvent); + + /** + * 修改安灯事件 + * + * @param andonEvent 安灯事件 + * @return 结果 + */ + public int updateAndonEvent(AndonEvent andonEvent); + + /** + * 删除安灯事件 + * + * @param eventId 安灯事件主键 + * @return 结果 + */ + public int deleteAndonEventByEventId(Long eventId); + + /** + * 批量删除安灯事件 + * + * @param eventIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAndonEventByEventIds(Long[] eventIds); +} diff --git a/aucma-production/src/main/java/com/aucma/production/mapper/AndonRuleMapper.java b/aucma-production/src/main/java/com/aucma/production/mapper/AndonRuleMapper.java new file mode 100644 index 0000000..f8d330f --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/mapper/AndonRuleMapper.java @@ -0,0 +1,62 @@ +package com.aucma.production.mapper; + +import com.aucma.production.domain.AndonRule; + +import java.util.List; + +/** + * 安灯规则配置Mapper接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface AndonRuleMapper +{ + /** + * 查询安灯规则配置 + * + * @param ruleId 安灯规则配置主键 + * @return 安灯规则配置 + */ + public AndonRule selectAndonRuleByRuleId(Long ruleId); + + /** + * 查询安灯规则配置列表 + * + * @param andonRule 安灯规则配置 + * @return 安灯规则配置集合 + */ + public List selectAndonRuleList(AndonRule andonRule); + + /** + * 新增安灯规则配置 + * + * @param andonRule 安灯规则配置 + * @return 结果 + */ + public int insertAndonRule(AndonRule andonRule); + + /** + * 修改安灯规则配置 + * + * @param andonRule 安灯规则配置 + * @return 结果 + */ + public int updateAndonRule(AndonRule andonRule); + + /** + * 删除安灯规则配置 + * + * @param ruleId 安灯规则配置主键 + * @return 结果 + */ + public int deleteAndonRuleByRuleId(Long ruleId); + + /** + * 批量删除安灯规则配置 + * + * @param ruleIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAndonRuleByRuleIds(Long[] ruleIds); +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/IAndonBoardConfigService.java b/aucma-production/src/main/java/com/aucma/production/service/IAndonBoardConfigService.java new file mode 100644 index 0000000..e149781 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/IAndonBoardConfigService.java @@ -0,0 +1,62 @@ +package com.aucma.production.service; + +import com.aucma.production.domain.AndonBoardConfig; + +import java.util.List; + +/** + * 安灯看板配置Service接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface IAndonBoardConfigService +{ + /** + * 查询安灯看板配置 + * + * @param boardId 安灯看板配置主键 + * @return 安灯看板配置 + */ + public AndonBoardConfig selectAndonBoardConfigByBoardId(Long boardId); + + /** + * 查询安灯看板配置列表 + * + * @param andonBoardConfig 安灯看板配置 + * @return 安灯看板配置集合 + */ + public List selectAndonBoardConfigList(AndonBoardConfig andonBoardConfig); + + /** + * 新增安灯看板配置 + * + * @param andonBoardConfig 安灯看板配置 + * @return 结果 + */ + public int insertAndonBoardConfig(AndonBoardConfig andonBoardConfig); + + /** + * 修改安灯看板配置 + * + * @param andonBoardConfig 安灯看板配置 + * @return 结果 + */ + public int updateAndonBoardConfig(AndonBoardConfig andonBoardConfig); + + /** + * 批量删除安灯看板配置 + * + * @param boardIds 需要删除的安灯看板配置主键集合 + * @return 结果 + */ + public int deleteAndonBoardConfigByBoardIds(Long[] boardIds); + + /** + * 删除安灯看板配置信息 + * + * @param boardId 安灯看板配置主键 + * @return 结果 + */ + public int deleteAndonBoardConfigByBoardId(Long boardId); +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/IAndonEventAssignmentService.java b/aucma-production/src/main/java/com/aucma/production/service/IAndonEventAssignmentService.java new file mode 100644 index 0000000..360977f --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/IAndonEventAssignmentService.java @@ -0,0 +1,62 @@ +package com.aucma.production.service; + +import com.aucma.production.domain.AndonEventAssignment; + +import java.util.List; + +/** + * 安灯派工记录(派工即通知/待办)Service接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface IAndonEventAssignmentService +{ + /** + * 查询安灯派工记录(派工即通知/待办) + * + * @param assignmentId 安灯派工记录(派工即通知/待办)主键 + * @return 安灯派工记录(派工即通知/待办) + */ + public AndonEventAssignment selectAndonEventAssignmentByAssignmentId(Long assignmentId); + + /** + * 查询安灯派工记录(派工即通知/待办)列表 + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 安灯派工记录(派工即通知/待办)集合 + */ + public List selectAndonEventAssignmentList(AndonEventAssignment andonEventAssignment); + + /** + * 新增安灯派工记录(派工即通知/待办) + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 结果 + */ + public int insertAndonEventAssignment(AndonEventAssignment andonEventAssignment); + + /** + * 修改安灯派工记录(派工即通知/待办) + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 结果 + */ + public int updateAndonEventAssignment(AndonEventAssignment andonEventAssignment); + + /** + * 批量删除安灯派工记录(派工即通知/待办) + * + * @param assignmentIds 需要删除的安灯派工记录(派工即通知/待办)主键集合 + * @return 结果 + */ + public int deleteAndonEventAssignmentByAssignmentIds(Long[] assignmentIds); + + /** + * 删除安灯派工记录(派工即通知/待办)信息 + * + * @param assignmentId 安灯派工记录(派工即通知/待办)主键 + * @return 结果 + */ + public int deleteAndonEventAssignmentByAssignmentId(Long assignmentId); +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/IAndonEventLogService.java b/aucma-production/src/main/java/com/aucma/production/service/IAndonEventLogService.java new file mode 100644 index 0000000..3a0bfd2 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/IAndonEventLogService.java @@ -0,0 +1,62 @@ +package com.aucma.production.service; + +import com.aucma.production.domain.AndonEventLog; + +import java.util.List; + +/** + * 安灯事件操作日志(审计与追踪)Service接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface IAndonEventLogService +{ + /** + * 查询安灯事件操作日志(审计与追踪) + * + * @param logId 安灯事件操作日志(审计与追踪)主键 + * @return 安灯事件操作日志(审计与追踪) + */ + public AndonEventLog selectAndonEventLogByLogId(Long logId); + + /** + * 查询安灯事件操作日志(审计与追踪)列表 + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 安灯事件操作日志(审计与追踪)集合 + */ + public List selectAndonEventLogList(AndonEventLog andonEventLog); + + /** + * 新增安灯事件操作日志(审计与追踪) + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 结果 + */ + public int insertAndonEventLog(AndonEventLog andonEventLog); + + /** + * 修改安灯事件操作日志(审计与追踪) + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 结果 + */ + public int updateAndonEventLog(AndonEventLog andonEventLog); + + /** + * 批量删除安灯事件操作日志(审计与追踪) + * + * @param logIds 需要删除的安灯事件操作日志(审计与追踪)主键集合 + * @return 结果 + */ + public int deleteAndonEventLogByLogIds(Long[] logIds); + + /** + * 删除安灯事件操作日志(审计与追踪)信息 + * + * @param logId 安灯事件操作日志(审计与追踪)主键 + * @return 结果 + */ + public int deleteAndonEventLogByLogId(Long logId); +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/IAndonEventService.java b/aucma-production/src/main/java/com/aucma/production/service/IAndonEventService.java new file mode 100644 index 0000000..893108e --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/IAndonEventService.java @@ -0,0 +1,100 @@ +package com.aucma.production.service; + +import com.aucma.production.domain.AndonEvent; + +import java.util.List; + +/** + * 安灯事件Service接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface IAndonEventService +{ + /** + * 查询安灯事件 + * + * @param eventId 安灯事件主键 + * @return 安灯事件 + */ + public AndonEvent selectAndonEventByEventId(Long eventId); + + /** + * 查询安灯事件列表 + * + * @param andonEvent 安灯事件 + * @return 安灯事件集合 + */ + public List selectAndonEventList(AndonEvent andonEvent); + + /** + * 新增安灯事件 + * + * @param andonEvent 安灯事件 + * @return 结果 + */ + public int insertAndonEvent(AndonEvent andonEvent); + + /** + * 修改安灯事件 + * + * @param andonEvent 安灯事件 + * @return 结果 + */ + public int updateAndonEvent(AndonEvent andonEvent); + + /** + * 批量删除安灯事件 + * + * @param eventIds 需要删除的安灯事件主键集合 + * @return 结果 + */ + public int deleteAndonEventByEventIds(Long[] eventIds); + + /** + * 删除安灯事件信息 + * + * @param eventId 安灯事件主键 + * @return 结果 + */ + public int deleteAndonEventByEventId(Long eventId); + + /** + * 确认安灯事件 + * + * @param eventId 事件ID + * @param ackBy 确认人 + * @return 结果 + */ + public int acknowledgeEvent(Long eventId, String ackBy); + + /** + * 开始处理安灯事件 + * + * @param eventId 事件ID + * @param operator 操作人 + * @return 结果 + */ + public int startProcessEvent(Long eventId, String operator); + + /** + * 完成安灯事件 + * + * @param eventId 事件ID + * @param resolution 解决措施 + * @param operator 操作人 + * @return 结果 + */ + public int completeEvent(Long eventId, String resolution, String operator); + + /** + * 取消安灯事件 + * + * @param eventId 事件ID + * @param cancelReason 取消原因 + * @param operator 操作人 + * @return 结果 + */ + public int cancelEvent(Long eventId, String cancelReason, String operator); +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/IAndonRuleService.java b/aucma-production/src/main/java/com/aucma/production/service/IAndonRuleService.java new file mode 100644 index 0000000..fce20fa --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/IAndonRuleService.java @@ -0,0 +1,62 @@ +package com.aucma.production.service; + +import com.aucma.production.domain.AndonRule; + +import java.util.List; + +/** + * 安灯规则配置Service接口 + * + * @author Yinq + * @date 2025-10-28 + */ +public interface IAndonRuleService +{ + /** + * 查询安灯规则配置 + * + * @param ruleId 安灯规则配置主键 + * @return 安灯规则配置 + */ + public AndonRule selectAndonRuleByRuleId(Long ruleId); + + /** + * 查询安灯规则配置列表 + * + * @param andonRule 安灯规则配置 + * @return 安灯规则配置集合 + */ + public List selectAndonRuleList(AndonRule andonRule); + + /** + * 新增安灯规则配置 + * + * @param andonRule 安灯规则配置 + * @return 结果 + */ + public int insertAndonRule(AndonRule andonRule); + + /** + * 修改安灯规则配置 + * + * @param andonRule 安灯规则配置 + * @return 结果 + */ + public int updateAndonRule(AndonRule andonRule); + + /** + * 批量删除安灯规则配置 + * + * @param ruleIds 需要删除的安灯规则配置主键集合 + * @return 结果 + */ + public int deleteAndonRuleByRuleIds(Long[] ruleIds); + + /** + * 删除安灯规则配置信息 + * + * @param ruleId 安灯规则配置主键 + * @return 结果 + */ + public int deleteAndonRuleByRuleId(Long ruleId); +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonBoardConfigServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonBoardConfigServiceImpl.java new file mode 100644 index 0000000..0215a28 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonBoardConfigServiceImpl.java @@ -0,0 +1,97 @@ +package com.aucma.production.service.impl; + +import com.aucma.common.utils.DateUtils; +import com.aucma.production.domain.AndonBoardConfig; +import com.aucma.production.mapper.AndonBoardConfigMapper; +import com.aucma.production.service.IAndonBoardConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 安灯看板配置Service业务层处理 + * + * @author Yinq + * @date 2025-10-28 + */ +@Service +public class AndonBoardConfigServiceImpl implements IAndonBoardConfigService +{ + @Autowired + private AndonBoardConfigMapper andonBoardConfigMapper; + + /** + * 查询安灯看板配置 + * + * @param boardId 安灯看板配置主键 + * @return 安灯看板配置 + */ + @Override + public AndonBoardConfig selectAndonBoardConfigByBoardId(Long boardId) + { + return andonBoardConfigMapper.selectAndonBoardConfigByBoardId(boardId); + } + + /** + * 查询安灯看板配置列表 + * + * @param andonBoardConfig 安灯看板配置 + * @return 安灯看板配置 + */ + @Override + public List selectAndonBoardConfigList(AndonBoardConfig andonBoardConfig) + { + return andonBoardConfigMapper.selectAndonBoardConfigList(andonBoardConfig); + } + + /** + * 新增安灯看板配置 + * + * @param andonBoardConfig 安灯看板配置 + * @return 结果 + */ + @Override + public int insertAndonBoardConfig(AndonBoardConfig andonBoardConfig) + { + andonBoardConfig.setCreateTime(DateUtils.getNowDate()); + return andonBoardConfigMapper.insertAndonBoardConfig(andonBoardConfig); + } + + /** + * 修改安灯看板配置 + * + * @param andonBoardConfig 安灯看板配置 + * @return 结果 + */ + @Override + public int updateAndonBoardConfig(AndonBoardConfig andonBoardConfig) + { + andonBoardConfig.setUpdateTime(DateUtils.getNowDate()); + return andonBoardConfigMapper.updateAndonBoardConfig(andonBoardConfig); + } + + /** + * 批量删除安灯看板配置 + * + * @param boardIds 需要删除的安灯看板配置主键 + * @return 结果 + */ + @Override + public int deleteAndonBoardConfigByBoardIds(Long[] boardIds) + { + return andonBoardConfigMapper.deleteAndonBoardConfigByBoardIds(boardIds); + } + + /** + * 删除安灯看板配置信息 + * + * @param boardId 安灯看板配置主键 + * @return 结果 + */ + @Override + public int deleteAndonBoardConfigByBoardId(Long boardId) + { + return andonBoardConfigMapper.deleteAndonBoardConfigByBoardId(boardId); + } +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventAssignmentServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventAssignmentServiceImpl.java new file mode 100644 index 0000000..5c33571 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventAssignmentServiceImpl.java @@ -0,0 +1,209 @@ +package com.aucma.production.service.impl; + +import com.aucma.common.utils.DateUtils; +import com.aucma.production.domain.AndonEvent; +import com.aucma.production.domain.AndonEventAssignment; +import com.aucma.production.domain.AndonEventLog; +import com.aucma.production.domain.AndonRule; +import com.aucma.production.mapper.AndonEventAssignmentMapper; +import com.aucma.production.mapper.AndonEventLogMapper; +import com.aucma.production.mapper.AndonEventMapper; +import com.aucma.production.mapper.AndonRuleMapper; +import com.aucma.production.service.IAndonEventAssignmentService; +import com.aucma.common.constant.AnDonConstants; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 安灯派工记录(派工即通知/待办)Service业务层处理 + * + * @author Yinq + * @date 2025-10-28 + */ +@Service +public class AndonEventAssignmentServiceImpl implements IAndonEventAssignmentService +{ + @Autowired + private AndonEventAssignmentMapper andonEventAssignmentMapper; + + @Autowired + private AndonEventMapper andonEventMapper; + + @Autowired + private AndonEventLogMapper andonEventLogMapper; + + @Autowired + private AndonRuleMapper andonRuleMapper; + + /** + * 查询安灯派工记录(派工即通知/待办) + * + * @param assignmentId 安灯派工记录(派工即通知/待办)主键 + * @return 安灯派工记录(派工即通知/待办) + */ + @Override + public AndonEventAssignment selectAndonEventAssignmentByAssignmentId(Long assignmentId) + { + return andonEventAssignmentMapper.selectAndonEventAssignmentByAssignmentId(assignmentId); + } + + /** + * 查询安灯派工记录(派工即通知/待办)列表 + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 安灯派工记录(派工即通知/待办) + */ + @Override + public List selectAndonEventAssignmentList(AndonEventAssignment andonEventAssignment) + { + return andonEventAssignmentMapper.selectAndonEventAssignmentList(andonEventAssignment); + } + + /** + * 新增安灯派工记录(派工即通知/待办) + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 结果 + */ + @Override + public int insertAndonEventAssignment(AndonEventAssignment andonEventAssignment) + { + andonEventAssignment.setCreateTime(DateUtils.getNowDate()); + return andonEventAssignmentMapper.insertAndonEventAssignment(andonEventAssignment); + } + + /** + * 修改安灯派工记录(派工即通知/待办) + * + * @param andonEventAssignment 安灯派工记录(派工即通知/待办) + * @return 结果 + */ + @Override + public int updateAndonEventAssignment(AndonEventAssignment andonEventAssignment) + { + andonEventAssignment.setUpdateTime(DateUtils.getNowDate()); + // 根据状态补充派工自身的里程碑时间 + if (andonEventAssignment.getStatus() != null) { + String status = andonEventAssignment.getStatus(); + if (AnDonConstants.AssignmentStatus.ACCEPTED.equals(status) && andonEventAssignment.getAcceptTime() == null) { + andonEventAssignment.setAcceptTime(DateUtils.getNowDate()); + } else if (AnDonConstants.AssignmentStatus.DONE.equals(status) && andonEventAssignment.getFinishTime() == null) { + andonEventAssignment.setFinishTime(DateUtils.getNowDate()); + } + } + int ret = andonEventAssignmentMapper.updateAndonEventAssignment(andonEventAssignment); + // 派工状态联动事件状态与里程碑,并记录日志 + try { + if (andonEventAssignment.getEventId() != null && andonEventAssignment.getStatus() != null) { + String status = andonEventAssignment.getStatus(); + AndonEvent e = andonEventMapper.selectAndonEventByEventId(andonEventAssignment.getEventId()); + if (e != null) { + if (AnDonConstants.AssignmentStatus.ACCEPTED.equals(status)) { + if (e.getResponseStartTime() == null) { + e.setResponseStartTime(DateUtils.getNowDate()); + } + e.setEventStatus(AnDonConstants.EventStatus.PROCESSING); + andonEventMapper.updateAndonEvent(e); + logEvent(e.getEventId(), AnDonConstants.Operation.ACCEPT, "派工已接受,事件进入处理中"); + } else if (AnDonConstants.AssignmentStatus.DONE.equals(status)) { + if (e.getResponseEndTime() == null) { + e.setResponseEndTime(DateUtils.getNowDate()); + } + e.setEventStatus(AnDonConstants.EventStatus.RESOLVED); + andonEventMapper.updateAndonEvent(e); + logEvent(e.getEventId(), AnDonConstants.Operation.RESOLVE, "派工已完成,事件标记已解决"); + // 完成时根据策略可取消其他派工 + if (shouldCancelOthers(e)) { + cancelOtherAssignments(e.getEventId(), andonEventAssignment.getAssignmentId()); + } + } else if (AnDonConstants.AssignmentStatus.CANCELLED.equals(status)) { + logEvent(e.getEventId(), AnDonConstants.Operation.CANCEL_ASSIGNMENT, "派工已取消"); + } else if (AnDonConstants.AssignmentStatus.REJECTED.equals(status)) { + logEvent(e.getEventId(), AnDonConstants.Operation.REJECT, "派工被拒绝"); + } + } + } + } catch (Exception ignore) { } + return ret; + } + + /** + * 批量删除安灯派工记录(派工即通知/待办) + * + * @param assignmentIds 需要删除的安灯派工记录(派工即通知/待办)主键 + * @return 结果 + */ + @Override + public int deleteAndonEventAssignmentByAssignmentIds(Long[] assignmentIds) + { + return andonEventAssignmentMapper.deleteAndonEventAssignmentByAssignmentIds(assignmentIds); + } + + /** + * 删除安灯派工记录(派工即通知/待办)信息 + * + * @param assignmentId 安灯派工记录(派工即通知/待办)主键 + * @return 结果 + */ + @Override + public int deleteAndonEventAssignmentByAssignmentId(Long assignmentId) + { + return andonEventAssignmentMapper.deleteAndonEventAssignmentByAssignmentId(assignmentId); + } + + private void logEvent(Long eventId, String operation, String content) { + if (eventId == null || operation == null || operation.trim().isEmpty()) return; + AndonEventLog log = new AndonEventLog(); + log.setEventId(eventId); + log.setOperation(operation); + log.setContent(content); + log.setOperationTime(DateUtils.getNowDate()); + andonEventLogMapper.insertAndonEventLog(log); + } + + /** 是否应取消其他派工:从规则 remark 读取 cancelOthers(默认 true)。 */ + private boolean shouldCancelOthers(AndonEvent e) { + if (e == null) return false; + AndonRule q = new AndonRule(); + q.setCallTypeCode(e.getCallTypeCode()); + q.setIsFlag(AnDonConstants.FLAG_VALID); + List rules = andonRuleMapper.selectAndonRuleList(q); + if (rules == null || rules.isEmpty()) return false; + String remark = rules.get(0).getRemark(); + if (remark == null || remark.trim().isEmpty()) return true; + try { + com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper(); + com.fasterxml.jackson.databind.JsonNode node = mapper.readTree(remark); + com.fasterxml.jackson.databind.JsonNode co = node.get("cancelOthers"); + if (co == null) return true; + return co.asBoolean(true); + } catch (Exception ex) { + return true; + } + } + + /** 取消同一事件下除当前派工外的其他派工。 */ + private void cancelOtherAssignments(Long eventId, Long currentAssignmentId) { + if (eventId == null) return; + AndonEventAssignment filter = new AndonEventAssignment(); + filter.setEventId(eventId); + List list = andonEventAssignmentMapper.selectAndonEventAssignmentList(filter); + if (list == null) return; + Date now = DateUtils.getNowDate(); + for (AndonEventAssignment a : list) { + if (a == null) continue; + if (currentAssignmentId != null && currentAssignmentId.equals(a.getAssignmentId())) continue; + // 仅取消未完成/未取消的派工 + String st = a.getStatus(); + if (st == null || AnDonConstants.AssignmentStatus.ASSIGNED.equals(st) || AnDonConstants.AssignmentStatus.ACCEPTED.equals(st)) { + a.setStatus(AnDonConstants.AssignmentStatus.CANCELLED); + a.setUpdateTime(now); + andonEventAssignmentMapper.updateAndonEventAssignment(a); + } + } + logEvent(eventId, AnDonConstants.Operation.CANCEL_OTHERS, "策略要求取消该事件的其他并行派工"); + } +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventLogServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventLogServiceImpl.java new file mode 100644 index 0000000..1331c72 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventLogServiceImpl.java @@ -0,0 +1,97 @@ +package com.aucma.production.service.impl; + +import com.aucma.common.utils.DateUtils; +import com.aucma.production.domain.AndonEventLog; +import com.aucma.production.mapper.AndonEventLogMapper; +import com.aucma.production.service.IAndonEventLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 安灯事件操作日志(审计与追踪)Service业务层处理 + * + * @author Yinq + * @date 2025-10-28 + */ +@Service +public class AndonEventLogServiceImpl implements IAndonEventLogService +{ + @Autowired + private AndonEventLogMapper andonEventLogMapper; + + /** + * 查询安灯事件操作日志(审计与追踪) + * + * @param logId 安灯事件操作日志(审计与追踪)主键 + * @return 安灯事件操作日志(审计与追踪) + */ + @Override + public AndonEventLog selectAndonEventLogByLogId(Long logId) + { + return andonEventLogMapper.selectAndonEventLogByLogId(logId); + } + + /** + * 查询安灯事件操作日志(审计与追踪)列表 + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 安灯事件操作日志(审计与追踪) + */ + @Override + public List selectAndonEventLogList(AndonEventLog andonEventLog) + { + return andonEventLogMapper.selectAndonEventLogList(andonEventLog); + } + + /** + * 新增安灯事件操作日志(审计与追踪) + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 结果 + */ + @Override + public int insertAndonEventLog(AndonEventLog andonEventLog) + { + andonEventLog.setCreateTime(DateUtils.getNowDate()); + return andonEventLogMapper.insertAndonEventLog(andonEventLog); + } + + /** + * 修改安灯事件操作日志(审计与追踪) + * + * @param andonEventLog 安灯事件操作日志(审计与追踪) + * @return 结果 + */ + @Override + public int updateAndonEventLog(AndonEventLog andonEventLog) + { + andonEventLog.setUpdateTime(DateUtils.getNowDate()); + return andonEventLogMapper.updateAndonEventLog(andonEventLog); + } + + /** + * 批量删除安灯事件操作日志(审计与追踪) + * + * @param logIds 需要删除的安灯事件操作日志(审计与追踪)主键 + * @return 结果 + */ + @Override + public int deleteAndonEventLogByLogIds(Long[] logIds) + { + return andonEventLogMapper.deleteAndonEventLogByLogIds(logIds); + } + + /** + * 删除安灯事件操作日志(审计与追踪)信息 + * + * @param logId 安灯事件操作日志(审计与追踪)主键 + * @return 结果 + */ + @Override + public int deleteAndonEventLogByLogId(Long logId) + { + return andonEventLogMapper.deleteAndonEventLogByLogId(logId); + } +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventServiceImpl.java new file mode 100644 index 0000000..5c70756 --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonEventServiceImpl.java @@ -0,0 +1,441 @@ +package com.aucma.production.service.impl; + +import com.aucma.common.utils.DateUtils; +import com.aucma.production.domain.AndonEvent; +import com.aucma.production.domain.AndonEventAssignment; +import com.aucma.production.domain.AndonEventLog; +import com.aucma.production.domain.AndonRule; +import com.aucma.production.mapper.AndonEventAssignmentMapper; +import com.aucma.production.mapper.AndonEventLogMapper; +import com.aucma.production.mapper.AndonEventMapper; +import com.aucma.production.mapper.AndonRuleMapper; +import com.aucma.production.service.IAndonEventService; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.aucma.common.constant.AnDonConstants; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 安灯事件Service业务层处理 + * + * @author Yinq + * @date 2025-10-28 + */ +@Service +public class AndonEventServiceImpl implements IAndonEventService +{ + @Autowired + private AndonEventMapper andonEventMapper; + + @Autowired + private AndonRuleMapper andonRuleMapper; + + @Autowired + private AndonEventAssignmentMapper andonEventAssignmentMapper; + + @Autowired + private AndonEventLogMapper andonEventLogMapper; + + /** + * 查询安灯事件 + * + * @param eventId 安灯事件主键 + * @return 安灯事件 + */ + @Override + public AndonEvent selectAndonEventByEventId(Long eventId) + { + return andonEventMapper.selectAndonEventByEventId(eventId); + } + + /** + * 查询安灯事件列表 + * + * @param andonEvent 安灯事件 + * @return 安灯事件 + */ + @Override + public List selectAndonEventList(AndonEvent andonEvent) + { + return andonEventMapper.selectAndonEventList(andonEvent); + } + + /** + * 新增安灯事件 + * + * @param andonEvent 安灯事件 + * @return 结果 + */ + @Override + public int insertAndonEvent(AndonEvent andonEvent) + { + andonEvent.setCreateTime(DateUtils.getNowDate()); + // 在新增时自动匹配规则并计算截止时间与优先级 + applyRuleAndCompute(andonEvent, true); + int ret = andonEventMapper.insertAndonEvent(andonEvent); + // 基于规则执行派工(派工即通知) + autoCreateAssignments(andonEvent); + // 记录日志:创建事件 + logEvent(andonEvent.getEventId(), AnDonConstants.Operation.CREATE, "事件创建并完成规则计算与派工初始化"); + return ret; + } + + /** + * 修改安灯事件 + * + * @param andonEvent 安灯事件 + * @return 结果 + */ + @Override + public int updateAndonEvent(AndonEvent andonEvent) + { + andonEvent.setUpdateTime(DateUtils.getNowDate()); + // 在修改时根据最新里程碑时间(如开始处理/确认)补充或重算解决截止时间 + applyRuleAndCompute(andonEvent, false); + int ret = andonEventMapper.updateAndonEvent(andonEvent); + // 若事件已取消,级联取消派工 + if (AnDonConstants.EventStatus.CANCELLED.equals(andonEvent.getEventStatus())) { + cascadeCancelAssignments(andonEvent.getEventId()); + logEvent(andonEvent.getEventId(), AnDonConstants.Operation.CANCEL, "事件取消,已级联取消派工"); + } else { + logEvent(andonEvent.getEventId(), AnDonConstants.Operation.EDIT, "事件编辑并同步时间计算"); + } + return ret; + } + + /** + * 批量删除安灯事件 + * + * @param eventIds 需要删除的安灯事件主键 + * @return 结果 + */ + @Override + public int deleteAndonEventByEventIds(Long[] eventIds) + { + return andonEventMapper.deleteAndonEventByEventIds(eventIds); + } + + /** + * 删除安灯事件信息 + * + * @param eventId 安灯事件主键 + * @return 结果 + */ + @Override + public int deleteAndonEventByEventId(Long eventId) + { + return andonEventMapper.deleteAndonEventByEventId(eventId); + } + + /** + * 基于 ANDON_RULE 规则计算事件的确认/解决截止时间与优先级。 + * - ACK_DEADLINE:创建时间 + ACK_TIMEOUT_MIN(分钟);仅在新增或缺失时计算。 + * - RESOLVE_DEADLINE:锚点(start→ack→create,可由 remark.resAnchor 指定) + RESOLVE_TIMEOUT_MIN(分钟)。 + * - PRIORITY:若事件未设置,则使用规则的 PRIORITY_DEFAULT。 + */ + private void applyRuleAndCompute(AndonEvent e, boolean isInsert) { + if (e == null) return; + + // 仅按呼叫类型与有效标记拉取候选规则,然后在内存中按“特征匹配度”挑选最优 + AndonRule query = new AndonRule(); + query.setCallTypeCode(e.getCallTypeCode()); + query.setIsFlag(AnDonConstants.FLAG_VALID); + List rules = andonRuleMapper.selectAndonRuleList(query); + AndonRule bestRule = pickBestRule(rules, e); + if (bestRule == null) { + // 无规则命中:保留优先级与截止时间为空或默认 + return; + } + + Integer ackTimeout = longToInt(bestRule.getAckTimeoutMin()); + Integer resolveTimeout = longToInt(bestRule.getResolveTimeoutMin()); + String resAnchor = parseResAnchor(bestRule.getRemark()); + + // 优先级:事件未手动设置时采用默认 + if (e.getPriority() == null && bestRule.getPriorityDefault() != null) { + e.setPriority(bestRule.getPriorityDefault()); + } + + // 确认截止时间:仅在新增或缺失时计算 + if ((isInsert || e.getAckDeadline() == null) && ackTimeout != null && ackTimeout > 0) { + Date createTime = e.getCreateTime(); + if (createTime != null) { + e.setAckDeadline(addMinutes(createTime, ackTimeout)); + } + } + + // 解决截止时间:依据锚点策略计算;在更新时允许重算以贴合最新里程碑 + if (resolveTimeout != null && resolveTimeout > 0) { + Date anchorTime = resolveAnchorTime(e, resAnchor); + if (anchorTime != null) { + e.setResolveDeadline(addMinutes(anchorTime, resolveTimeout)); + } + } + } + + /** + * 根据规则为事件生成派工记录(优先 NOTIFY_USERS,其次 NOTIFY_ROLES)。 + */ + private void autoCreateAssignments(AndonEvent e) { + if (e == null || e.getEventId() == null) return; + AndonRule query = new AndonRule(); + query.setCallTypeCode(e.getCallTypeCode()); + query.setIsFlag(AnDonConstants.FLAG_VALID); + AndonRule rule = pickBestRule(andonRuleMapper.selectAndonRuleList(query), e); + if (rule == null) return; + + Date now = DateUtils.getNowDate(); + boolean created = false; + String mode = parseMode(rule.getRemark()); // single | multi + String fallback = parseFallback(rule.getRemark()); // role | none + + // 优先使用用户列表 + if (notEmpty(rule.getNotifyUsers())) { + String[] ids = rule.getNotifyUsers().split(","); + for (int i = 0; i < ids.length; i++) { + String t = ids[i] == null ? null : ids[i].trim(); + if (!notEmpty(t)) continue; + try { + Long uid = Long.valueOf(t); + AndonEventAssignment a = new AndonEventAssignment(); + a.setEventId(e.getEventId()); + a.setAssigneeUserId(uid); + a.setAssignedTime(now); + a.setStatus(AnDonConstants.AssignmentStatus.ASSIGNED); + a.setIsFlag(AnDonConstants.FLAG_VALID); + a.setCreateTime(now); + andonEventAssignmentMapper.insertAndonEventAssignment(a); + created = true; + if ("single".equals(mode)) break; // 单人模式:仅创建一个派工 + } catch (Exception ignore) { } + } + } + // 若无用户或单人模式未创建且允许角色兜底 + if ((!created) && "role".equals(fallback) && notEmpty(rule.getNotifyRoles())) { + String[] roles = rule.getNotifyRoles().split(","); + for (int i = 0; i < roles.length; i++) { + String rk = roles[i] == null ? null : roles[i].trim(); + if (!notEmpty(rk)) continue; + AndonEventAssignment a = new AndonEventAssignment(); + a.setEventId(e.getEventId()); + a.setAssigneeRoleKey(rk); + a.setAssignedTime(now); + a.setStatus(AnDonConstants.AssignmentStatus.ASSIGNED); + a.setIsFlag(AnDonConstants.FLAG_VALID); + a.setCreateTime(now); + andonEventAssignmentMapper.insertAndonEventAssignment(a); + created = true; + if ("single".equals(mode)) break; + } + } + if (created) { + logEvent(e.getEventId(), AnDonConstants.Operation.ASSIGN, "根据规则创建派工记录"); + } + } + + /** 解析派工模式:single|multi,默认为 single(兼容当前单人负责人)。 */ + private String parseMode(String remark) { + String def = "single"; + if (!notEmpty(remark)) return def; + try { + ObjectMapper mapper = new ObjectMapper(); + JsonNode node = mapper.readTree(remark); + JsonNode mode = node.get("mode"); + if (mode != null && notEmpty(mode.asText())) { + String v = mode.asText(); + if ("single".equalsIgnoreCase(v) || "multi".equalsIgnoreCase(v)) { + return v.toLowerCase(); + } + } + } catch (Exception ignore) { } + return def; + } + + /** 解析兜底策略:role|none,默认 role。 */ + private String parseFallback(String remark) { + String def = "role"; + if (!notEmpty(remark)) return def; + try { + ObjectMapper mapper = new ObjectMapper(); + JsonNode node = mapper.readTree(remark); + JsonNode fb = node.get("fallback"); + if (fb != null && notEmpty(fb.asText())) { + String v = fb.asText(); + if ("role".equalsIgnoreCase(v) || "none".equalsIgnoreCase(v)) { + return v.toLowerCase(); + } + } + } catch (Exception ignore) { } + return def; + } + + /** 事件取消时级联取消派工。 */ + private void cascadeCancelAssignments(Long eventId) { + if (eventId == null) return; + AndonEventAssignment filter = new AndonEventAssignment(); + filter.setEventId(eventId); + List list = andonEventAssignmentMapper.selectAndonEventAssignmentList(filter); + if (list == null) return; + Date now = DateUtils.getNowDate(); + for (AndonEventAssignment a : list) { + if (a == null) continue; + a.setStatus(AnDonConstants.AssignmentStatus.CANCELLED); + a.setUpdateTime(now); + andonEventAssignmentMapper.updateAndonEventAssignment(a); + } + } + + /** 写入事件日志。 */ + private void logEvent(Long eventId, String operation, String content) { + if (eventId == null || !notEmpty(operation)) return; + AndonEventLog log = new AndonEventLog(); + log.setEventId(eventId); + log.setOperation(operation); + log.setContent(content); + log.setOperationTime(DateUtils.getNowDate()); + andonEventLogMapper.insertAndonEventLog(log); + } + + /** 选择匹配度最高的规则:按产线/工位/班组/触发源类型的精确匹配数排序。 */ + private AndonRule pickBestRule(List rules, AndonEvent e) { + if (rules == null || rules.isEmpty() || e == null) return null; + AndonRule best = null; + int bestScore = -1; + for (AndonRule r : rules) { + int score = 0; + if (notEmpty(r.getProductLineCode()) && r.getProductLineCode().equals(e.getProductLineCode())) score++; + if (notEmpty(r.getStationCode()) && r.getStationCode().equals(e.getStationCode())) score++; + if (notEmpty(r.getTeamCode()) && r.getTeamCode().equals(e.getTeamCode())) score++; + if (notEmpty(r.getSourceType()) && r.getSourceType().equals(e.getSourceType())) score++; + if (score > bestScore) { + bestScore = score; + best = r; + } + } + return best; + } + + /** 解析规则 remark 中的 resAnchor(start|ack|create),默认 start。 */ + private String parseResAnchor(String remark) { + String def = "start"; + if (!notEmpty(remark)) return def; + try { + ObjectMapper mapper = new ObjectMapper(); + JsonNode node = mapper.readTree(remark); + JsonNode anchor = node.get("resAnchor"); + if (anchor != null && notEmpty(anchor.asText())) { + String v = anchor.asText(); + if ("start".equalsIgnoreCase(v) || "ack".equalsIgnoreCase(v) || "create".equalsIgnoreCase(v)) { + return v.toLowerCase(); + } + } + } catch (Exception ignore) { } + return def; + } + + /** 根据策略选择解决时限的起算锚点时间。 */ + private Date resolveAnchorTime(AndonEvent e, String resAnchor) { + if (e == null) return null; + String a = (notEmpty(resAnchor) ? resAnchor : "start"); + if ("start".equals(a)) { + if (e.getResponseStartTime() != null) return e.getResponseStartTime(); + if (e.getAckTime() != null) return e.getAckTime(); + return e.getCreateTime(); + } else if ("ack".equals(a)) { + if (e.getAckTime() != null) return e.getAckTime(); + return e.getCreateTime(); + } else { // create + return e.getCreateTime(); + } + } + + private boolean notEmpty(String s) { return s != null && !s.trim().isEmpty(); } + private Integer longToInt(Long v) { return v == null ? null : v.intValue(); } + private Date addMinutes(Date base, int minutes) { return base == null ? null : new Date(base.getTime() + minutes * 60L * 1000L); } + + /** + * 确认安灯事件:将状态由 PENDING 转为 PROCESSING,记录确认人与确认时间。 + */ + @Override + public int acknowledgeEvent(Long eventId, String ackBy) { + if (eventId == null) return 0; + AndonEvent event = andonEventMapper.selectAndonEventByEventId(eventId); + if (event == null) return 0; + + Date now = DateUtils.getNowDate(); + event.setAckBy(ackBy); + event.setAckTime(now); + event.setEventStatus(AnDonConstants.EventStatus.PROCESSING); + event.setUpdateTime(now); + + int ret = andonEventMapper.updateAndonEvent(event); + logEvent(eventId, AnDonConstants.Operation.ACK, "事件已确认,确认人:" + ackBy); + return ret; + } + + /** + * 开始处理安灯事件:记录开始处理时间,将状态置为 PROCESSING。 + */ + @Override + public int startProcessEvent(Long eventId, String operator) { + if (eventId == null) return 0; + AndonEvent event = andonEventMapper.selectAndonEventByEventId(eventId); + if (event == null) return 0; + + Date now = DateUtils.getNowDate(); + event.setResponseStartTime(now); + event.setEventStatus(AnDonConstants.EventStatus.PROCESSING); + event.setUpdateTime(now); + + // 重算解决截止时间(以开始处理时间为锤点) + applyRuleAndCompute(event, false); + + int ret = andonEventMapper.updateAndonEvent(event); + logEvent(eventId, AnDonConstants.Operation.EDIT, "开始处理,操作人:" + operator); + return ret; + } + + /** + * 完成安灯事件:记录处理完成时间与解决措施,将状态置为 RESOLVED。 + */ + @Override + public int completeEvent(Long eventId, String resolution, String operator) { + if (eventId == null) return 0; + AndonEvent event = andonEventMapper.selectAndonEventByEventId(eventId); + if (event == null) return 0; + + Date now = DateUtils.getNowDate(); + event.setResponseEndTime(now); + event.setResolution(resolution); + event.setEventStatus(AnDonConstants.EventStatus.RESOLVED); + event.setUpdateTime(now); + + int ret = andonEventMapper.updateAndonEvent(event); + logEvent(eventId, AnDonConstants.Operation.RESOLVE, "事件已完成,操作人:" + operator); + return ret; + } + + /** + * 取消安灯事件:记录取消原因,将状态置为 CANCELLED,级联取消派工。 + */ + @Override + public int cancelEvent(Long eventId, String cancelReason, String operator) { + if (eventId == null) return 0; + AndonEvent event = andonEventMapper.selectAndonEventByEventId(eventId); + if (event == null) return 0; + + Date now = DateUtils.getNowDate(); + event.setCancelReason(cancelReason); + event.setEventStatus(AnDonConstants.EventStatus.CANCELLED); + event.setUpdateTime(now); + + int ret = andonEventMapper.updateAndonEvent(event); + cascadeCancelAssignments(eventId); + logEvent(eventId, AnDonConstants.Operation.CANCEL, "事件已取消,操作人:" + operator + ",原因:" + (cancelReason != null ? cancelReason : "未填写")); + return ret; + } +} diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/AndonRuleServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonRuleServiceImpl.java new file mode 100644 index 0000000..2d906ad --- /dev/null +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/AndonRuleServiceImpl.java @@ -0,0 +1,97 @@ +package com.aucma.production.service.impl; + +import com.aucma.common.utils.DateUtils; +import com.aucma.production.domain.AndonRule; +import com.aucma.production.mapper.AndonRuleMapper; +import com.aucma.production.service.IAndonRuleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 安灯规则配置Service业务层处理 + * + * @author Yinq + * @date 2025-10-28 + */ +@Service +public class AndonRuleServiceImpl implements IAndonRuleService +{ + @Autowired + private AndonRuleMapper andonRuleMapper; + + /** + * 查询安灯规则配置 + * + * @param ruleId 安灯规则配置主键 + * @return 安灯规则配置 + */ + @Override + public AndonRule selectAndonRuleByRuleId(Long ruleId) + { + return andonRuleMapper.selectAndonRuleByRuleId(ruleId); + } + + /** + * 查询安灯规则配置列表 + * + * @param andonRule 安灯规则配置 + * @return 安灯规则配置 + */ + @Override + public List selectAndonRuleList(AndonRule andonRule) + { + return andonRuleMapper.selectAndonRuleList(andonRule); + } + + /** + * 新增安灯规则配置 + * + * @param andonRule 安灯规则配置 + * @return 结果 + */ + @Override + public int insertAndonRule(AndonRule andonRule) + { + andonRule.setCreateTime(DateUtils.getNowDate()); + return andonRuleMapper.insertAndonRule(andonRule); + } + + /** + * 修改安灯规则配置 + * + * @param andonRule 安灯规则配置 + * @return 结果 + */ + @Override + public int updateAndonRule(AndonRule andonRule) + { + andonRule.setUpdateTime(DateUtils.getNowDate()); + return andonRuleMapper.updateAndonRule(andonRule); + } + + /** + * 批量删除安灯规则配置 + * + * @param ruleIds 需要删除的安灯规则配置主键 + * @return 结果 + */ + @Override + public int deleteAndonRuleByRuleIds(Long[] ruleIds) + { + return andonRuleMapper.deleteAndonRuleByRuleIds(ruleIds); + } + + /** + * 删除安灯规则配置信息 + * + * @param ruleId 安灯规则配置主键 + * @return 结果 + */ + @Override + public int deleteAndonRuleByRuleId(Long ruleId) + { + return andonRuleMapper.deleteAndonRuleByRuleId(ruleId); + } +} diff --git a/aucma-production/src/main/resources/mapper/production/AndonBoardConfigMapper.xml b/aucma-production/src/main/resources/mapper/production/AndonBoardConfigMapper.xml new file mode 100644 index 0000000..f7947e9 --- /dev/null +++ b/aucma-production/src/main/resources/mapper/production/AndonBoardConfigMapper.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + select board_id, board_code, board_name, product_line_code, station_code, display_fields, refresh_interval_sec, is_flag, remark, create_by, create_time, update_by, update_time from andon_board_config + + + + + + + + + SELECT ANDON_BOARD_CONFIG_SEQ.NEXTVAL as boardId FROM DUAL + + insert into andon_board_config + + board_id, + board_code, + board_name, + product_line_code, + station_code, + display_fields, + refresh_interval_sec, + is_flag, + remark, + create_by, + create_time, + update_by, + update_time, + + + #{boardId}, + #{boardCode}, + #{boardName}, + #{productLineCode}, + #{stationCode}, + #{displayFields}, + #{refreshIntervalSec}, + #{isFlag}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update andon_board_config + + board_code = #{boardCode}, + board_name = #{boardName}, + product_line_code = #{productLineCode}, + station_code = #{stationCode}, + display_fields = #{displayFields}, + refresh_interval_sec = #{refreshIntervalSec}, + is_flag = #{isFlag}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where board_id = #{boardId} + + + + delete from andon_board_config where board_id = #{boardId} + + + + delete from andon_board_config where board_id in + + #{boardId} + + + \ No newline at end of file diff --git a/aucma-production/src/main/resources/mapper/production/AndonEventAssignmentMapper.xml b/aucma-production/src/main/resources/mapper/production/AndonEventAssignmentMapper.xml new file mode 100644 index 0000000..83a1368 --- /dev/null +++ b/aucma-production/src/main/resources/mapper/production/AndonEventAssignmentMapper.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select assignment_id, event_id, assignee_user_id, assignee_user_name, assignee_role_key, assignee_team_code, assigned_time, accept_time, finish_time, status, is_flag, remark, create_by, create_time, update_by, update_time from andon_event_assignment + + + + + + + + + SELECT ANDON_EVENT_ASSIGNMENT_SEQ.NEXTVAL as assignmentId FROM DUAL + + insert into andon_event_assignment + + assignment_id, + event_id, + assignee_user_id, + assignee_user_name, + assignee_role_key, + assignee_team_code, + assigned_time, + accept_time, + finish_time, + status, + is_flag, + remark, + create_by, + create_time, + update_by, + update_time, + + + #{assignmentId}, + #{eventId}, + #{assigneeUserId}, + #{assigneeUserName}, + #{assigneeRoleKey}, + #{assigneeTeamCode}, + #{assignedTime}, + #{acceptTime}, + #{finishTime}, + #{status}, + #{isFlag}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update andon_event_assignment + + event_id = #{eventId}, + assignee_user_id = #{assigneeUserId}, + assignee_user_name = #{assigneeUserName}, + assignee_role_key = #{assigneeRoleKey}, + assignee_team_code = #{assigneeTeamCode}, + assigned_time = #{assignedTime}, + accept_time = #{acceptTime}, + finish_time = #{finishTime}, + status = #{status}, + is_flag = #{isFlag}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where assignment_id = #{assignmentId} + + + + delete from andon_event_assignment where assignment_id = #{assignmentId} + + + + delete from andon_event_assignment where assignment_id in + + #{assignmentId} + + + \ No newline at end of file diff --git a/aucma-production/src/main/resources/mapper/production/AndonEventLogMapper.xml b/aucma-production/src/main/resources/mapper/production/AndonEventLogMapper.xml new file mode 100644 index 0000000..9516960 --- /dev/null +++ b/aucma-production/src/main/resources/mapper/production/AndonEventLogMapper.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + select log_id, event_id, operation, content, operator_user_id, operator_user_name, operation_time, remark, create_by, create_time, update_by, update_time from andon_event_log + + + + + + + + + SELECT ANDON_EVENT_LOG_SEQ.NEXTVAL as logId FROM DUAL + + insert into andon_event_log + + log_id, + event_id, + operation, + content, + operator_user_id, + operator_user_name, + operation_time, + remark, + create_by, + create_time, + update_by, + update_time, + + + #{logId}, + #{eventId}, + #{operation}, + #{content}, + #{operatorUserId}, + #{operatorUserName}, + #{operationTime}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update andon_event_log + + event_id = #{eventId}, + operation = #{operation}, + content = #{content}, + operator_user_id = #{operatorUserId}, + operator_user_name = #{operatorUserName}, + operation_time = #{operationTime}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where log_id = #{logId} + + + + delete from andon_event_log where log_id = #{logId} + + + + delete from andon_event_log where log_id in + + #{logId} + + + \ No newline at end of file diff --git a/aucma-production/src/main/resources/mapper/production/AndonEventMapper.xml b/aucma-production/src/main/resources/mapper/production/AndonEventMapper.xml new file mode 100644 index 0000000..eb7780c --- /dev/null +++ b/aucma-production/src/main/resources/mapper/production/AndonEventMapper.xml @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select event_id, call_code, call_type_code, source_type, source_ref_id, product_line_code, station_code, team_code, order_code, material_code, device_id, device_code, priority, event_status, description, ack_by, ack_time, response_start_time, response_end_time, resolution, cancel_reason, escalate_level, escalate_time, ack_deadline, resolve_deadline, is_flag, remark, create_by, create_time, update_by, update_time from andon_event + + + + + + + + + SELECT ANDON_EVENT_SEQ.NEXTVAL as eventId FROM DUAL + + insert into andon_event + + event_id, + call_code, + call_type_code, + source_type, + source_ref_id, + product_line_code, + station_code, + team_code, + order_code, + material_code, + device_id, + device_code, + priority, + event_status, + description, + ack_by, + ack_time, + response_start_time, + response_end_time, + resolution, + cancel_reason, + escalate_level, + escalate_time, + ack_deadline, + resolve_deadline, + is_flag, + remark, + create_by, + create_time, + update_by, + update_time, + + + #{eventId}, + #{callCode}, + #{callTypeCode}, + #{sourceType}, + #{sourceRefId}, + #{productLineCode}, + #{stationCode}, + #{teamCode}, + #{orderCode}, + #{materialCode}, + #{deviceId}, + #{deviceCode}, + #{priority}, + #{eventStatus}, + #{description}, + #{ackBy}, + #{ackTime}, + #{responseStartTime}, + #{responseEndTime}, + #{resolution}, + #{cancelReason}, + #{escalateLevel}, + #{escalateTime}, + #{ackDeadline}, + #{resolveDeadline}, + #{isFlag}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update andon_event + + call_code = #{callCode}, + call_type_code = #{callTypeCode}, + source_type = #{sourceType}, + source_ref_id = #{sourceRefId}, + product_line_code = #{productLineCode}, + station_code = #{stationCode}, + team_code = #{teamCode}, + order_code = #{orderCode}, + material_code = #{materialCode}, + device_id = #{deviceId}, + device_code = #{deviceCode}, + priority = #{priority}, + event_status = #{eventStatus}, + description = #{description}, + ack_by = #{ackBy}, + ack_time = #{ackTime}, + response_start_time = #{responseStartTime}, + response_end_time = #{responseEndTime}, + resolution = #{resolution}, + cancel_reason = #{cancelReason}, + escalate_level = #{escalateLevel}, + escalate_time = #{escalateTime}, + ack_deadline = #{ackDeadline}, + resolve_deadline = #{resolveDeadline}, + is_flag = #{isFlag}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where event_id = #{eventId} + + + + delete from andon_event where event_id = #{eventId} + + + + delete from andon_event where event_id in + + #{eventId} + + + \ No newline at end of file diff --git a/aucma-production/src/main/resources/mapper/production/AndonRuleMapper.xml b/aucma-production/src/main/resources/mapper/production/AndonRuleMapper.xml new file mode 100644 index 0000000..d2153f0 --- /dev/null +++ b/aucma-production/src/main/resources/mapper/production/AndonRuleMapper.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select rule_id, rule_name, call_type_code, product_line_code, station_code, team_code, source_type, ack_timeout_min, resolve_timeout_min, priority_default, notify_roles, notify_users, escalate_levels, effective_begin_time, effective_end_time, is_flag, remark, create_by, create_time, update_by, update_time from andon_rule + + + + + + + + + SELECT ANDON_RULE_SEQ.NEXTVAL as ruleId FROM DUAL + + insert into andon_rule + + rule_id, + rule_name, + call_type_code, + product_line_code, + station_code, + team_code, + source_type, + ack_timeout_min, + resolve_timeout_min, + priority_default, + notify_roles, + notify_users, + escalate_levels, + effective_begin_time, + effective_end_time, + is_flag, + remark, + create_by, + create_time, + update_by, + update_time, + + + #{ruleId}, + #{ruleName}, + #{callTypeCode}, + #{productLineCode}, + #{stationCode}, + #{teamCode}, + #{sourceType}, + #{ackTimeoutMin}, + #{resolveTimeoutMin}, + #{priorityDefault}, + #{notifyRoles}, + #{notifyUsers}, + #{escalateLevels}, + #{effectiveBeginTime}, + #{effectiveEndTime}, + #{isFlag}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update andon_rule + + rule_name = #{ruleName}, + call_type_code = #{callTypeCode}, + product_line_code = #{productLineCode}, + station_code = #{stationCode}, + team_code = #{teamCode}, + source_type = #{sourceType}, + ack_timeout_min = #{ackTimeoutMin}, + resolve_timeout_min = #{resolveTimeoutMin}, + priority_default = #{priorityDefault}, + notify_roles = #{notifyRoles}, + notify_users = #{notifyUsers}, + escalate_levels = #{escalateLevels}, + effective_begin_time = #{effectiveBeginTime}, + effective_end_time = #{effectiveEndTime}, + is_flag = #{isFlag}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where rule_id = #{ruleId} + + + + delete from andon_rule where rule_id = #{ruleId} + + + + delete from andon_rule where rule_id in + + #{ruleId} + + + \ No newline at end of file