feat: 新增工艺路线、工艺路线绑定工序、工序新增参数
| | |
| | | ADD COLUMN `form_instance_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'å®æè¡¨åå®ä¾ID' AFTER `customer_type`, |
| | | ADD COLUMN `form_modified_time` datetime(0) NULL DEFAULT NULL COMMENT 'å®æä¿®æ¹æ¶é´' AFTER `form_instance_id`; |
| | | |
| | | ALTER TABLE `process_route` |
| | | ADD COLUMN `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'ç¶æï¼0-è稿ï¼1-å·²æ¹å' AFTER `bom_id`; |
| | | |
| | | CREATE TABLE `process_route_item_param` |
| | | ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主é®ID', |
| | | `route_item_id` bigint NOT NULL COMMENT 'å
³èå·¥èºè·¯çº¿æç»ID (process_route_item.id)', |
| | | `param_id` bigint NOT NULL COMMENT 'å
³èåºç¡åæ°å®ä¹ID (base_param.id)', |
| | | `process_param_id` bigint DEFAULT NULL COMMENT 'æ¥æºå·¥åºåæ°ID', |
| | | |
| | | `standard_value` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'æ¤è·¯çº¿èç¹è®¾å®çæ åå¼', |
| | | `min_value` decimal(10, 2) DEFAULT NULL COMMENT 'æ¤è·¯çº¿èç¹è®¾å®çæ åæå°å¼', |
| | | `max_value` decimal(10, 2) DEFAULT NULL COMMENT 'æ¤è·¯çº¿èç¹è®¾å®çæ åæå¤§å¼', |
| | | `is_required` tinyint NOT NULL DEFAULT '0' COMMENT 'æ¯å¦å¿
å¡«', |
| | | |
| | | `sort` int NOT NULL DEFAULT '0' COMMENT 'æåº', |
| | | `tenant_id` bigint DEFAULT NULL COMMENT 'ç§æ·ID', |
| | | `create_time` datetime DEFAULT CURRENT_TIMESTAMP, |
| | | `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | KEY `idx_route_item_id` (`route_item_id`) USING BTREE, |
| | | KEY `idx_param_id` (`param_id`) USING BTREE |
| | | ) ENGINE = InnoDB |
| | | DEFAULT CHARSET = utf8mb4 |
| | | COLLATE = utf8mb4_0900_ai_ci COMMENT ='å·¥èºè·¯çº¿å·¥åºåæ°è¡¨'; |
| | | |
| | | |
| | | ALTER TABLE `product-inventory-management-zsjc`.`quality_inspect` |
| | | ADD COLUMN `inspect_nature` varchar(255) NULL COMMENT 'æ£æµæ§è´¨' AFTER `test_standard_id`, |
| | |
| | | return R.ok(processRouteItemService.listProcessRouteItemDto(processRouteItemDto)); |
| | | } |
| | | |
| | | @PostMapping () |
| | | @ApiOperation("æ°å¢ä¿®æ¹") |
| | | @PostMapping() |
| | | @ApiOperation("æ°å¢ä¿®æ¹å·¥åº") |
| | | public R addOrUpdate(@RequestBody ProcessRouteItem processRouteItem) { |
| | | return R.ok(processRouteItemService.saveOrUpdate(processRouteItem)); |
| | | return R.ok(processRouteItemService.saveOrUpdateProcess(processRouteItem)); |
| | | } |
| | | |
| | | @PostMapping ("/sort") |
| | | @PostMapping("/sort") |
| | | @ApiOperation("æåº") |
| | | public R sort(@RequestBody ProcessRouteItem processRouteItem) { |
| | | return R.ok(processRouteItemService.sort(processRouteItem)); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.production.dto.ProcessRouteItemParamDto; |
| | | import com.ruoyi.production.pojo.ProcessRouteItemParam; |
| | | import com.ruoyi.production.service.ProcessRouteItemParamService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Arrays; |
| | | |
| | | /** |
| | | * <br> |
| | | * å·¥èºè·¯çº¿å·¥åºåæ°å®ä¾æ§å¶å± |
| | | * </br> |
| | | * |
| | | * @author deslrey |
| | | * @version 1.0 |
| | | * @since 2026/03/16 11:15 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/ProcessRouteItemParam") |
| | | @Api("å·¥èºè·¯çº¿å·¥åºåæ°å®ä¾æ§å¶å±") |
| | | public class ProcessRouteItemParamController { |
| | | |
| | | @Autowired |
| | | private ProcessRouteItemParamService processRouteItemParamService; |
| | | |
| | | |
| | | @GetMapping("/pageList") |
| | | @ApiOperation("å·¥èºç»å®çå·¥åºåæ°å页æ¥è¯¢") |
| | | @Log(title = "å·¥èºç»å®çå·¥åºåæ°å页æ¥è¯¢", businessType = BusinessType.OTHER) |
| | | public AjaxResult listPage(Page<ProcessRouteItemParam> page, ProcessRouteItemParam param) { |
| | | IPage<ProcessRouteItemParamDto> paramIPage = processRouteItemParamService.pageList(page, param); |
| | | return AjaxResult.success(paramIPage); |
| | | } |
| | | |
| | | @ApiOperation("ä¿®æ¹åæ°å®ä¾å¼") |
| | | @PutMapping("/edit") |
| | | @Log(title = "ä¿®æ¹åæ°", businessType = BusinessType.UPDATE) |
| | | public AjaxResult edit(@RequestBody ProcessRouteItemParam param) { |
| | | return AjaxResult.success(processRouteItemParamService.updateById(param)); |
| | | } |
| | | |
| | | @ApiOperation("å é¤åæ°") |
| | | @DeleteMapping("/remove/{ids}") |
| | | @Log(title = "å é¤åæ°", businessType = BusinessType.DELETE) |
| | | public AjaxResult remove(@PathVariable Long[] ids) { |
| | | return AjaxResult.success(processRouteItemParamService.removeByIds(Arrays.asList(ids))); |
| | | } |
| | | |
| | | @ApiOperation("åå§åå·¥åºåæ°") |
| | | @PostMapping("/init") |
| | | @Log(title = "åå§ååæ°", businessType = BusinessType.INSERT) |
| | | public AjaxResult init(Long routeItemId, Long processId) { |
| | | return AjaxResult.success(processRouteItemParamService.initParams(routeItemId, processId)); |
| | | } |
| | | |
| | | @ApiOperation("æ°å¢åä¸ªåæ°å®ä¾") |
| | | @PostMapping("/save") |
| | | @Log(title = "æ°å¢åæ°", businessType = BusinessType.INSERT) |
| | | public AjaxResult save(@RequestBody ProcessRouteItemParam param) { |
| | | processRouteItemParamService.saveParam(param); |
| | | return AjaxResult.success(); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProcessRouteItemParam; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <br> |
| | | * å·¥èºè·¯çº¿å·¥åºåæ°å®ä¾Dto |
| | | * </br> |
| | | * |
| | | * @author deslrey |
| | | * @version 1.0 |
| | | * @since 2026/03/16 11:23 |
| | | */ |
| | | @Data |
| | | public class ProcessRouteItemParamDto extends ProcessRouteItemParam { |
| | | @ApiModelProperty("åæ°åç§°") |
| | | private String paramName; |
| | | |
| | | @ApiModelProperty("åæ°å¯ä¸æ è¯") |
| | | private String paramKey; |
| | | |
| | | @ApiModelProperty("åä½") |
| | | private String unit; |
| | | |
| | | @ApiModelProperty("åæ°ç±»å(1æ°å 2ææ¬ 3䏿鿩 4æ¶é´)") |
| | | private Integer paramType; |
| | | |
| | | @ApiModelProperty("åæ°æ ¼å¼") |
| | | private String paramFormat; |
| | | |
| | | @ApiModelProperty("弿¨¡å¼(1åå¼ 2åºé´)") |
| | | private Integer valueMode; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProcessRouteItemParamDto; |
| | | import com.ruoyi.production.pojo.ProcessRouteItemParam; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * <br> |
| | | * å·¥èºè·¯çº¿å·¥åºåæ°å®ä¾ Mapper |
| | | * </br> |
| | | * |
| | | * @author deslrey |
| | | * @version 1.0 |
| | | * @since 2026/03/16 11:11 |
| | | */ |
| | | public interface ProcessRouteItemParamMapper extends BaseMapper<ProcessRouteItemParam> { |
| | | |
| | | IPage<ProcessRouteItemParamDto> selectParamPage(@Param("page") Page<ProcessRouteItemParam> page, @Param("p") ProcessRouteItemParam param); |
| | | |
| | | /** |
| | | * æ ¹æ®å·¥åº ID åå§ååæ°å°å·¥èºè·¯çº¿æç»å®ä¾ |
| | | * |
| | | * @param routeItemId å·¥èºè·¯çº¿æç»ID |
| | | * @param processId å·¥åºID |
| | | * @param tenantId ç§æ·ID |
| | | */ |
| | | int insertFromProcessTemplate(@Param("routeItemId") Long routeItemId, @Param("processId") Long processId, @Param("tenantId") Long tenantId); |
| | | |
| | | Integer selectMaxSortByRouteItemId(Long routeItemId); |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "BOMçID") |
| | | private Integer bomId; |
| | | |
| | | @ApiModelProperty(value = "ç¶æï¼0-è稿ï¼1-å·²æ¹å") |
| | | private Boolean status; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * <br> |
| | | * å·¥èºè·¯çº¿å·¥åºåæ°å®ä¾ |
| | | * </br> |
| | | * |
| | | * @author deslrey |
| | | * @version 1.0 |
| | | * @since 2026/03/16 11:07 |
| | | */ |
| | | @Data |
| | | @TableName("process_route_item_param") |
| | | @ApiModel("å·¥èºè·¯çº¿å·¥åºåæ°å®ä¾è¡¨") |
| | | public class ProcessRouteItemParam { |
| | | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @ApiModelProperty("主é®ID") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty("å
³èå·¥èºè·¯çº¿æç»ID (process_route_item.id)") |
| | | private Long routeItemId; |
| | | |
| | | @ApiModelProperty("å
³èåºç¡åæ°å®ä¹ID (base_param.id)") |
| | | private Long paramId; |
| | | |
| | | @ApiModelProperty("æ¥æºå·¥åºåæ°ID") |
| | | private Long processParamId; |
| | | |
| | | @ApiModelProperty("æ¤è·¯çº¿èç¹è®¾å®çæ åå¼") |
| | | private String standardValue; |
| | | |
| | | @ApiModelProperty("æ¤è·¯çº¿èç¹è®¾å®çæ åæå°å¼") |
| | | private BigDecimal minValue; |
| | | |
| | | @ApiModelProperty("æ¤è·¯çº¿èç¹è®¾å®çæ åæå¤§å¼") |
| | | private BigDecimal maxValue; |
| | | |
| | | @ApiModelProperty("æ¯å¦å¿
å¡«") |
| | | private Integer isRequired; |
| | | |
| | | @ApiModelProperty("æåº") |
| | | private Integer sort; |
| | | |
| | | @ApiModelProperty("ç§æ·ID") |
| | | private Long tenantId; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ApiModelProperty("å建æ¶é´") |
| | | private LocalDateTime createTime; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ApiModelProperty("æ´æ°æ¶é´") |
| | | private LocalDateTime updateTime; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.production.dto.ProcessRouteItemParamDto; |
| | | import com.ruoyi.production.pojo.ProcessRouteItemParam; |
| | | |
| | | /** |
| | | * <br> |
| | | * å·¥èºè·¯çº¿å·¥åºåæ°å®ä¾ Service |
| | | * </br> |
| | | * |
| | | * @author deslrey |
| | | * @version 1.0 |
| | | * @since 2026/03/16 11:11 |
| | | */ |
| | | public interface ProcessRouteItemParamService extends IService<ProcessRouteItemParam> { |
| | | |
| | | IPage<ProcessRouteItemParamDto> pageList(Page<ProcessRouteItemParam> page, ProcessRouteItemParam param); |
| | | |
| | | boolean initParams(Long routeItemId, Long processId); |
| | | |
| | | void saveParam(ProcessRouteItemParam param); |
| | | } |
| | |
| | | int sort(ProcessRouteItem processRouteItem); |
| | | |
| | | String batchDelete(Long id); |
| | | |
| | | boolean saveOrUpdateProcess(ProcessRouteItem processRouteItem); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.pojo.BaseParam; |
| | | import com.ruoyi.basic.service.BaseParamService; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.production.dto.ProcessRouteItemParamDto; |
| | | import com.ruoyi.production.mapper.ProcessRouteItemParamMapper; |
| | | import com.ruoyi.production.pojo.ProcessRouteItemParam; |
| | | import com.ruoyi.production.service.ProcessRouteItemParamService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * <br> |
| | | * å·¥èºè·¯çº¿å·¥åºåæ°å®ä¾ ServiceImpl |
| | | * </br> |
| | | * |
| | | * @author deslrey |
| | | * @version 1.0 |
| | | * @since 2026/03/16 11:11 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class ProcessRouteItemParamServiceImpl extends ServiceImpl<ProcessRouteItemParamMapper, ProcessRouteItemParam> implements ProcessRouteItemParamService { |
| | | |
| | | @Autowired |
| | | private BaseParamService baseParamService; |
| | | |
| | | @Override |
| | | public IPage<ProcessRouteItemParamDto> pageList(Page<ProcessRouteItemParam> page, ProcessRouteItemParam param) { |
| | | return baseMapper.selectParamPage(page, param); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean initParams(Long routeItemId, Long processId) { |
| | | Long tenantId = SecurityUtils.getLoginUser().getTenantId(); |
| | | if (tenantId == null) { |
| | | tenantId = 208L; |
| | | } |
| | | |
| | | return baseMapper.insertFromProcessTemplate(routeItemId, processId, tenantId) > 0; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void saveParam(ProcessRouteItemParam param) { |
| | | if (param == null) { |
| | | throw new ServiceException("æ°å¢å¤±è´¥,åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | if (param.getRouteItemId() == null || param.getParamId() == null) { |
| | | throw new ServiceException("å
³èå·¥åºIDå忰项IDä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | Long tenantId = SecurityUtils.getLoginUser().getTenantId(); |
| | | Long count = baseMapper.selectCount(Wrappers.<ProcessRouteItemParam>lambdaQuery() |
| | | .eq(ProcessRouteItemParam::getRouteItemId, param.getRouteItemId()) |
| | | .eq(ProcessRouteItemParam::getParamId, param.getParamId()) |
| | | .eq(ProcessRouteItemParam::getTenantId, tenantId)); |
| | | if (count > 0) { |
| | | throw new ServiceException("该工åºå·²å卿¤åæ°é¡¹ï¼è¯·å¿é夿·»å "); |
| | | } |
| | | |
| | | BaseParam baseParam = baseParamService.getById(param.getParamId()); |
| | | if (baseParam == null) { |
| | | throw new ServiceException("æ°å¢å¤±è´¥,æ¹åºç¡åæ°ä¸åå¨"); |
| | | } |
| | | |
| | | Integer maxSort = baseMapper.selectMaxSortByRouteItemId(param.getRouteItemId()); |
| | | param.setId(null); |
| | | param.setProcessParamId(null); |
| | | param.setSort(maxSort); |
| | | param.setCreateTime(LocalDateTime.now()); |
| | | param.setTenantId(tenantId); |
| | | |
| | | this.save(param); |
| | | } |
| | | } |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.production.dto.ProcessRouteItemDto; |
| | | import com.ruoyi.production.mapper.ProcessRouteItemMapper; |
| | | import com.ruoyi.production.mapper.ProcessRouteItemParamMapper; |
| | | import com.ruoyi.production.pojo.ProcessRouteItem; |
| | | import com.ruoyi.production.pojo.ProcessRouteItemParam; |
| | | import com.ruoyi.production.service.ProcessRouteItemService; |
| | | import com.ruoyi.production.service.ProductMaterialSkuService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | |
| | | @Autowired |
| | | private ProcessRouteItemMapper processRouteItemMapper; |
| | | |
| | | @Autowired |
| | | private ProcessRouteItemParamMapper processRouteItemParamMapper; |
| | | |
| | | @Autowired |
| | | private ProductMaterialSkuService productMaterialSkuService; |
| | | |
| | | @Override |
| | | public List<ProcessRouteItemDto> listProcessRouteItemDto(ProcessRouteItemDto processRouteItemDto) { |
| | |
| | | Long routeId = deleteProcessRouteItem.getRouteId(); |
| | | // å 餿宿°æ® |
| | | processRouteItemMapper.deleteById(id); |
| | | // å é¤å¯¹åºçåæ°å表 |
| | | processRouteItemParamMapper.delete(new LambdaQueryWrapper<ProcessRouteItemParam>().eq(ProcessRouteItemParam::getRouteItemId,id)); |
| | | |
| | | // æ¥è¯¢è¯¥å·¥èºè·¯çº¿çææå·¥åºå¹¶æç
§é¡ºåºæåº |
| | | List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery() |
| | | .eq(ProcessRouteItem::getRouteId, routeId) |
| | |
| | | } |
| | | return "å 餿å"; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean saveOrUpdateProcess(ProcessRouteItem processRouteItem) { |
| | | if (processRouteItem == null) { |
| | | throw new ServiceException("æ°æ®ä¸è½ä¸ºç©º"); |
| | | } |
| | | if (processRouteItem.getProductModelId() != null) { |
| | | Object product = productMaterialSkuService.getById(processRouteItem.getProductModelId()); |
| | | if (product == null) { |
| | | throw new ServiceException("æä½å¤±è´¥ï¼å
³èç产å(ID:" + processRouteItem.getProductModelId() + ")ä¸åå¨"); |
| | | } |
| | | } else { |
| | | throw new ServiceException("产åIDä¸è½ä¸ºç©º"); |
| | | } |
| | | Long tenantId = SecurityUtils.getLoginUser().getTenantId(); |
| | | processRouteItem.setTenantId(tenantId); |
| | | |
| | | boolean result; |
| | | if (processRouteItem.getId() == null) { |
| | | Long maxSort = processRouteItemMapper.selectCount(Wrappers.<ProcessRouteItem>lambdaQuery().eq(ProcessRouteItem::getRouteId, processRouteItem.getRouteId())); |
| | | processRouteItem.setDragSort((int) (maxSort + 1)); |
| | | |
| | | result = this.save(processRouteItem); |
| | | processRouteItemParamMapper.insertFromProcessTemplate(processRouteItem.getId(), processRouteItem.getProcessId(), tenantId); |
| | | } else { |
| | | result = this.updateById(processRouteItem); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Integer saveProcessRoute(ProcessRoute processRoute) { |
| | | this.save(processRoute); |
| | | String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | String idStr = String.format("%06d", processRoute.getId()); |
| | | String newProductCode = "GYLX" + dateStr + idStr; |
| | | // æ´æ°æ°æ®åºä¸çproductCode |
| | | processRoute.setProcessRouteCode(newProductCode); |
| | | return processRouteMapper.updateById(processRoute); |
| | | save(processRoute); |
| | | if (processRoute.getProcessRouteCode() == null || processRoute.getProcessRouteCode().trim().isEmpty()) { |
| | | String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | String idStr = String.format("%06d", processRoute.getId()); |
| | | String newProductCode = "GYLX" + dateStr + idStr; |
| | | processRoute.setProcessRouteCode(newProductCode); |
| | | return processRouteMapper.updateById(processRoute); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | public int batchDelete(List<Long> ids) { |
| | | //å
夿æ¯å¦å·²ç»å¼ç¨äº |
| | | List<ProductOrder> productOrders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getRouteId, ids)); |
| | | if (productOrders.size()>0){ |
| | | if (productOrders.size() > 0) { |
| | | throw new RuntimeException("该工èºè·¯çº¿ç产已å¼ç¨ï¼ä¸è½å é¤"); |
| | | } |
| | | //å é¤å·¥èºè·¯çº¿è¯¦æ
|
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProcessRouteItemParamMapper"> |
| | | |
| | | <resultMap id="ProcessRouteItemParamResultMap" type="com.ruoyi.production.pojo.ProcessRouteItemParam"> |
| | | <id property="id" column="id"/> |
| | | <result property="routeItemId" column="route_item_id"/> |
| | | <result property="paramId" column="param_id"/> |
| | | <result property="processParamId" column="process_param_id"/> |
| | | <result property="standardValue" column="standard_value"/> |
| | | <result property="minValue" column="min_value"/> |
| | | <result property="maxValue" column="max_value"/> |
| | | <result property="isRequired" column="is_required"/> |
| | | <result property="sort" column="sort"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | </resultMap> |
| | | |
| | | <insert id="insertFromProcessTemplate"> |
| | | INSERT INTO process_route_item_param (route_item_id, param_id, process_param_id, |
| | | standard_value, min_value, max_value, |
| | | is_required, sort, tenant_id, create_time) |
| | | SELECT #{routeItemId}, |
| | | param_id, |
| | | id, |
| | | standard_value, |
| | | min_value, |
| | | max_value, |
| | | is_required, |
| | | sort, |
| | | #{tenantId}, |
| | | NOW() |
| | | FROM product_process_param |
| | | WHERE process_id = #{processId} |
| | | </insert> |
| | | |
| | | <select id="selectParamPage" resultType="com.ruoyi.production.dto.ProcessRouteItemParamDto"> |
| | | select |
| | | prip.*, |
| | | bp.param_name, |
| | | bp.param_key, |
| | | bp.unit, |
| | | bp.param_type, |
| | | bp.param_format, |
| | | bp.value_mode |
| | | from process_route_item_param prip |
| | | left join base_param bp on prip.param_id = bp.id |
| | | <where> |
| | | <if test="p.routeItemId != null"> |
| | | and prip.route_item_id = #{p.routeItemId} |
| | | </if> |
| | | <if test="p.tenantId != null"> |
| | | and prip.tenant_id = #{p.tenantId} |
| | | </if> |
| | | </where> |
| | | order by prip.sort asc, prip.id asc |
| | | </select> |
| | | |
| | | <select id="selectMaxSortByRouteItemId" resultType="java.lang.Integer"> |
| | | SELECT MAX(sort) |
| | | FROM process_route_item_param |
| | | WHERE route_item_id = #{routeItemId} |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProcessRoute"> |
| | | <id property="id" column="id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="description" column="description"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | <id property="id" column="id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="description" column="description"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | <result property="status" column="status"/> |
| | | </resultMap> |
| | | |
| | | |
| | | <select id="pageProcessRouteDto" resultType="com.ruoyi.production.dto.ProcessRouteDto"> |
| | | select ps.*, p.product_name,pm.product_id,pm.model,pb.bom_no |
| | | select |
| | | ps.*, |
| | | pm.product_name, pms.product_id, pms.model, pb.bom_no |
| | | from process_route ps |
| | | left join product_bom pb on ps.bom_id = pb.id |
| | | left join product_model pm on ps.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | left join product_material_sku pms on ps.product_model_id = pms.id |
| | | left join product_material pm on pms.product_id = pm.id |
| | | <where> |
| | | <if test="c.model != null and c.model != ''"> |
| | | and pm.model like concat('%',#{c.model},'%') |
| | | and pms.model like concat('%', #{c.model}, '%') |
| | | </if> |
| | | </where> |
| | | order by ps.id asc |
| | | order by ps.id |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | </resultMap> |
| | | |
| | | <select id="listItem" resultType="com.ruoyi.production.dto.ProductProcessRouteItemDto"> |
| | | select ppri.*, |
| | | pp.name as process_name, |
| | | pm.model, |
| | | pp.name as process_name, |
| | | pms.model, |
| | | pm.unit, |
| | | p.product_name, |
| | | case when pwo.complete_quantity>0 then true else false end as is_complete |
| | | pm.product_name, |
| | | case when pwo.complete_quantity > 0 then true else false end as is_complete |
| | | from product_process_route_item ppri |
| | | left join product_model pm on ppri.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | left join product_material_sku pms on ppri.product_model_id = pms.id |
| | | left join product_material pm on pms.product_id = pm.id |
| | | left join product_process pp on pp.id = ppri.process_id |
| | | left join product_work_order pwo on pwo.product_process_route_item_id = ppri.id |
| | | where ppri.product_order_id = #{orderId} |