|  |  | 
 |  |  |  | 
 |  |  |     @ApiModelProperty("æ£éªäºº") | 
 |  |  |     private String userName; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty("éå®è®¢ååç±»") | 
 |  |  |     private String orderType; | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     @ApiModelProperty("æ£éªå¯¹è±¡") | 
 |  |  |     private String sampleType; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty("éå®è®¢ååç±»åç§°") | 
 |  |  |     private String orderTypeName; | 
 |  |  |  | 
 |  |  |     @ExcelProperty(index = 7, value = "æ ·ååç§°") | 
 |  |  |     @ApiModelProperty("æ ·ååç§°") | 
 |  |  |     private String sampleName; | 
 
 |  |  | 
 |  |  | import com.ruoyi.basic.pojo.StandardMethodList; | 
 |  |  | import com.ruoyi.basic.pojo.StandardProductList; | 
 |  |  | import com.ruoyi.basic.pojo.StandardTree; | 
 |  |  | import org.apache.ibatis.annotations.Mapper; | 
 |  |  | import org.apache.ibatis.annotations.Param; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | 
 |  |  |  * @createDate 2024-03-01 15:06:44 | 
 |  |  |  * @Entity com.ruoyi.basic.pojo.StandardTree | 
 |  |  |  */ | 
 |  |  | @Mapper | 
 |  |  | public interface StandardTreeMapper extends BaseMapper<StandardTree> { | 
 |  |  |  | 
 |  |  |     List<FactoryDto> selectStandardTreeList(); | 
 
 |  |  | 
 |  |  |     @ApiModelProperty("订åå·") | 
 |  |  |     private String orderNo; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty("订åç±»å(01raw:åææï¼02wg:å¤è´æå)") | 
 |  |  |     private String orderType; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty("è¡å·") | 
 |  |  |     private String lineNo; | 
 |  |  |  | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.controller; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto; | 
 |  |  | import com.ruoyi.common.annotation.PersonalScope; | 
 |  |  | import com.ruoyi.common.core.domain.Result; | 
 |  |  | import com.ruoyi.inspect.service.IfsOrderInspectionService; | 
 |  |  | import com.ruoyi.inspect.service.RawMaterialOrderService; | 
 |  |  | import io.swagger.annotations.ApiOperation; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.security.access.prepost.PreAuthorize; | 
 |  |  | import org.springframework.web.bind.annotation.GetMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RestController; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * ifséå®è®¢åæ¥æ£controller | 
 |  |  |  */ | 
 |  |  | @RestController | 
 |  |  | @RequestMapping("/ifsOrderInspection") | 
 |  |  | public class IfsOrderInspectionController { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IfsOrderInspectionService ifsOrderInspectionService; | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "éå®è®¢åæ¥æ£æ¥è¯¢å
¨é¨") | 
 |  |  |     @PreAuthorize("@ss.hasPermi('get:Ifs:ByAll')") | 
 |  |  |     @GetMapping("/getIfsByAll") | 
 |  |  |     public Result getIfsByAll(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto){ | 
 |  |  |         return Result.success(ifsOrderInspectionService.getIfsByOver(page, ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "éå®è®¢åæ¥æ£æ¥çå·²å®æä¿¡æ¯") | 
 |  |  |     @GetMapping("/getIfsByFinish") | 
 |  |  |     public Result getIfsByFinish(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) { | 
 |  |  |         ifsInventoryQuantityDto.setIsFinish(1); | 
 |  |  |         return Result.success(ifsOrderInspectionService.getIfsByOver(page, ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.controller; | 
 |  |  |  | 
 |  |  | import com.ruoyi.common.core.domain.Result; | 
 |  |  | import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO; | 
 |  |  | import com.ruoyi.inspect.pojo.IfsPartPropsRecord; | 
 |  |  | import com.ruoyi.inspect.service.IfsPartPropsRecordService; | 
 |  |  | import io.swagger.annotations.Api; | 
 |  |  | import io.swagger.annotations.ApiOperation; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * ifsé¶ä»¶å±æ§controller | 
 |  |  |  */ | 
 |  |  | @Api("ifsé¶ä»¶å±æ§") | 
 |  |  | @RestController | 
 |  |  | @RequestMapping("/ifsPartProps") | 
 |  |  | public class IfsPartPropsRecordController { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IfsPartPropsRecordService ifsPartPropsRecordService; | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "æ°å¢æä¿åé¶ä»¶å±æ§") | 
 |  |  |     @PostMapping("/saveOrUpdateProps") | 
 |  |  |     public Result saveOrUpdateProps(@RequestBody  IfsPartPropsRecordDTO ifsPartPropsRecord){ | 
 |  |  |         return Result.success(ifsPartPropsRecordService.saveOrUpdateProps(ifsPartPropsRecord)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "æ¥è¯¢ifs订åçé¶ä»¶å±æ§è®°å½") | 
 |  |  |     @GetMapping("/getOneByIfsId/{ifsId}") | 
 |  |  |     public Result getOneByIfsId(@PathVariable("ifsId") Long ifsId){ | 
 |  |  |         return Result.success(ifsPartPropsRecordService.getOneByIfsId(ifsId)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.controller; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantityDto; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto; | 
 |  |  | import com.ruoyi.basic.pojo.IfsInventoryQuantity; | 
 |  |  | import com.ruoyi.common.annotation.PersonalScope; | 
 |  |  | import com.ruoyi.common.core.domain.Result; | 
 |  |  | import com.ruoyi.inspect.service.OutsourcingFinishProductInspectionService; | 
 |  |  | import io.swagger.annotations.ApiOperation; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.security.access.prepost.PreAuthorize; | 
 |  |  | import org.springframework.web.bind.annotation.GetMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RestController; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * å¤è´æåæ£éªcontroller | 
 |  |  |  */ | 
 |  |  | @RestController | 
 |  |  | @RequestMapping("/outsourcingFinishProduct") | 
 |  |  | public class OutsourcingFinishProductInspectionController { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private OutsourcingFinishProductInspectionService outsourcingFinishProductInspectionService; | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "ä»åºæ¥æ£æ¥è¯¢") | 
 |  |  |     @GetMapping("/getWarehouseSubmit") | 
 |  |  |     public Result getWarehouseSubmit(Page page, IfsInventoryQuantity ifsInventoryQuantity) { | 
 |  |  |         return Result.success(outsourcingFinishProductInspectionService.getWarehouseSubmit(page, ifsInventoryQuantity)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "å¤è´æåæ£éªæ¥è¯¢æ£éªä¸") | 
 |  |  |     @GetMapping("/getIfsByStateOne") | 
 |  |  |     @PreAuthorize("@ss.hasPermi('business:order')") | 
 |  |  |     @PersonalScope(permsName = "business:order", objectName = IfsInventoryQuantityDto.class, paramName = "createUser") | 
 |  |  |     public Result getIfsByStateOne(Page page, IfsInventoryQuantityDto ifsInventoryQuantityDto){ | 
 |  |  |         return Result.success(outsourcingFinishProductInspectionService.getIfsByStateOne(page, ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "å¤è´æåæ£éªæ¥è¯¢å·²æ£éª") | 
 |  |  |     @GetMapping("/getIfsByOver") | 
 |  |  |     @PreAuthorize("@ss.hasPermi('business:order')") | 
 |  |  |     @PersonalScope(permsName = "business:order", objectName = IfsInventoryQuantitySupplierDto.class, paramName = "createUser") | 
 |  |  |     public Result getIfsByOver(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto){ | 
 |  |  |         return Result.success(outsourcingFinishProductInspectionService.getIfsByOver(page, ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "åæææ¥æ£æ¥è¯¢å
¨é¨") | 
 |  |  |     @PreAuthorize("@ss.hasPermi('get:Ifs:ByAll')") | 
 |  |  |     @GetMapping("/getIfsByAll") | 
 |  |  |     public Result getIfsByAll(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto){ | 
 |  |  |         return Result.success(outsourcingFinishProductInspectionService.getIfsByOver(page, ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import com.ruoyi.basic.dto.*; | 
 |  |  | import com.ruoyi.basic.pojo.IfsInventoryQuantity; | 
 |  |  | import com.ruoyi.common.annotation.PersonalScope; | 
 |  |  | import com.ruoyi.common.enums.OrderType; | 
 |  |  | import com.ruoyi.framework.exception.ErrorException; | 
 |  |  | import com.ruoyi.inspect.dto.InsPlaceOrderDto; | 
 |  |  | import com.ruoyi.inspect.dto.OrderSplitDTO; | 
 |  |  | import com.ruoyi.inspect.dto.SampleProductDto; | 
 |  |  | 
 |  |  | import java.io.File; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  | import java.util.Objects; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * @Author zhuo | 
 |  |  | 
 |  |  |     @PostMapping("/inspectionReport") | 
 |  |  |     public Result<?> inspectionReport(@RequestBody Map<String, Object> param) { | 
 |  |  |         List<Long> ids = (List<Long>) param.get("ids"); | 
 |  |  |         return Result.success(rawMaterialOrderService.inspectionReport(ids)); | 
 |  |  |         String orderType = Objects.nonNull(param.get("ids"))?param.get("ids").toString():""; | 
 |  |  |         if(!OrderType.validateValue(orderType)){ | 
 |  |  |             throw new ErrorException("æ¹éæ¥æ£å¤±è´¥,éæ³çéå®è®¢ååç±»æä¸¾"); | 
 |  |  |         } | 
 |  |  |         return Result.success(rawMaterialOrderService.inspectionReport(ids,orderType)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |     @PreAuthorize("@ss.hasPermi('get:Ifs:ByAll')") | 
 |  |  |     @GetMapping("/getIfsByAll") | 
 |  |  |     public Result getIfsByAll(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto){ | 
 |  |  |         ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue()); | 
 |  |  |         return Result.success(rawMaterialOrderService.getIfsByOver(page, ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     @GetMapping("/getIfsByFinish") | 
 |  |  |     public Result getIfsByFinish(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) throws Exception { | 
 |  |  |         ifsInventoryQuantityDto.setIsFinish(1); | 
 |  |  |         ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue()); | 
 |  |  |         return Result.success(rawMaterialOrderService.getIfsByOver(page, ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  |  | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.dto; | 
 |  |  |  | 
 |  |  | import com.ruoyi.inspect.pojo.IfsPartPropsRecord; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | public class IfsPartPropsRecordDTO extends IfsPartPropsRecord { | 
 |  |  |  | 
 |  |  |     private String partNo; | 
 |  |  |  | 
 |  |  |     private String lotBatchNo; | 
 |  |  |  | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.mapper; | 
 |  |  |  | 
 |  |  | import com.ruoyi.inspect.pojo.IfsPartPropsRecord; | 
 |  |  | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 
 |  |  | import org.apache.ibatis.annotations.Mapper; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | * @author 27233 | 
 |  |  | * @description é对表ãifs_part_props_record(ifs订åé¶ä»¶å±æ§è®°å½è¡¨)ãçæ°æ®åºæä½Mapper | 
 |  |  | * @createDate 2025-10-23 15:00:34 | 
 |  |  | * @Entity com.ruoyi.inspect.pojo.IfsPartPropsRecord | 
 |  |  | */ | 
 |  |  | @Mapper | 
 |  |  | public interface IfsPartPropsRecordMapper extends BaseMapper<IfsPartPropsRecord> { | 
 |  |  |  | 
 |  |  | } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 
 |  |  | 
 |  |  |  | 
 |  |  | import com.ruoyi.inspect.pojo.IfsSplitOrderRecord; | 
 |  |  | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 
 |  |  | import org.apache.ibatis.annotations.Mapper; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | * @author 27233 | 
 |  |  | 
 |  |  | * @createDate 2025-09-23 11:20:20 | 
 |  |  | * @Entity com.ruoyi.inspect.pojo.IfsSplitOrderRecord | 
 |  |  | */ | 
 |  |  | @Mapper | 
 |  |  | public interface IfsSplitOrderRecordMapper extends BaseMapper<IfsSplitOrderRecord> { | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import com.ruoyi.inspect.vo.IfsOrderVO; | 
 |  |  | import com.ruoyi.inspect.vo.InsOrderPrintingVo; | 
 |  |  | import com.ruoyi.inspect.vo.SampleDefectsFatherVo; | 
 |  |  | import org.apache.ibatis.annotations.Mapper; | 
 |  |  | import org.apache.ibatis.annotations.Param; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | 
 |  |  |  * @createDate 2024-03-12 16:17:55 | 
 |  |  |  * @Entity com.yuanchu.mom.pojo.InsOrder | 
 |  |  |  */ | 
 |  |  | @Mapper | 
 |  |  | public interface InsOrderMapper extends BaseMapper<InsOrder> { | 
 |  |  |  | 
 |  |  |     //è·åæ£éªä¸åæ°æ® | 
 
 |  |  | 
 |  |  | import com.ruoyi.inspect.dto.SampleProductRawAnalysisDto; | 
 |  |  | import com.ruoyi.inspect.pojo.InsProduct; | 
 |  |  | import com.ruoyi.inspect.pojo.InsProductDeviationWarningDetail; | 
 |  |  | import org.apache.ibatis.annotations.Mapper; | 
 |  |  | import org.apache.ibatis.annotations.Param; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | 
 |  |  | * @createDate 2024-03-08 09:45:03 | 
 |  |  | * @Entity com.yuanchu.mom.pojo.InsProduct | 
 |  |  | */ | 
 |  |  | @Mapper | 
 |  |  | public interface InsProductMapper extends BaseMapper<InsProduct> { | 
 |  |  |  | 
 |  |  |     int selectOrderManDay(@Param("orderId") Integer orderId); | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.pojo; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.annotation.IdType; | 
 |  |  | import com.baomidou.mybatisplus.annotation.TableField; | 
 |  |  | import com.baomidou.mybatisplus.annotation.TableId; | 
 |  |  | import com.baomidou.mybatisplus.annotation.TableName; | 
 |  |  | import java.io.Serializable; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * ifs订åé¶ä»¶å±æ§è®°å½è¡¨ | 
 |  |  |  * @TableName ifs_part_props_record | 
 |  |  |  */ | 
 |  |  | @TableName(value ="ifs_part_props_record") | 
 |  |  | @Data | 
 |  |  | public class IfsPartPropsRecord implements Serializable { | 
 |  |  |     /** | 
 |  |  |      * ä¸»é®id | 
 |  |  |      */ | 
 |  |  |     @TableId(type = IdType.AUTO) | 
 |  |  |     private Long id; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * ifs订åid | 
 |  |  |      */ | 
 |  |  |     private Long ifsInventoryId; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * è½½å
·ç¼å· | 
 |  |  |      */ | 
 |  |  |     private String drumNo; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * èµ·å§ç±³æ  | 
 |  |  |      */ | 
 |  |  |     private BigDecimal startMeterMark; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * æªæ¢ç±³æ  | 
 |  |  |      */ | 
 |  |  |     private BigDecimal endMeterMark; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * ç»ç¼é¢è² | 
 |  |  |      */ | 
 |  |  |     private String insulationColor; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * å¤æ¤é¢è² | 
 |  |  |      */ | 
 |  |  |     private String outerColor; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * å°åä¿¡æ¯ | 
 |  |  |      */ | 
 |  |  |     private String letteringInfo; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * ifsé¶ä»¶å±æ§æ´æ°æ è¯ | 
 |  |  |      */ | 
 |  |  |     private Boolean partPropsFlag; | 
 |  |  |  | 
 |  |  |     @TableField(exist = false) | 
 |  |  |     private static final long serialVersionUID = 1L; | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.service; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto; | 
 |  |  | import org.springframework.stereotype.Component; | 
 |  |  |  | 
 |  |  | @Component | 
 |  |  | public interface IfsOrderInspectionService { | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * æ¥è¯¢å·²æ£éª | 
 |  |  |      * @param page | 
 |  |  |      * @param ifsInventoryQuantityDto | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto); | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.service; | 
 |  |  |  | 
 |  |  | import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO; | 
 |  |  | import com.ruoyi.inspect.pojo.IfsPartPropsRecord; | 
 |  |  | import com.baomidou.mybatisplus.extension.service.IService; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | * @author 27233 | 
 |  |  | * @description é对表ãifs_part_props_record(ifs订åé¶ä»¶å±æ§è®°å½è¡¨)ãçæ°æ®åºæä½Service | 
 |  |  | * @createDate 2025-10-23 15:00:34 | 
 |  |  | */ | 
 |  |  | public interface IfsPartPropsRecordService extends IService<IfsPartPropsRecord> { | 
 |  |  |  | 
 |  |  |     boolean saveOrUpdateProps(IfsPartPropsRecordDTO ifsPartPropsRecord); | 
 |  |  |  | 
 |  |  |     IfsPartPropsRecord getOneByIfsId(Long ifsId); | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.service; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantityDto; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto; | 
 |  |  | import com.ruoyi.basic.pojo.IfsInventoryQuantity; | 
 |  |  | import org.springframework.stereotype.Component; | 
 |  |  |  | 
 |  |  | @Component | 
 |  |  | public interface OutsourcingFinishProductInspectionService { | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * æ¥æ£æ¥è¯¢ | 
 |  |  |      * @param page | 
 |  |  |      * @param ifsInventoryQuantity | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     IPage<IfsInventoryQuantity> getWarehouseSubmit(Page page, IfsInventoryQuantity ifsInventoryQuantity); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * æ¥è¯¢å·²æ£éª | 
 |  |  |      * @param page | 
 |  |  |      * @param ifsInventoryQuantityDto | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     IPage<IfsInventoryQuantitySupplierDto>  getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * æ¥è¯¢æ£éªå¼ | 
 |  |  |      * @param page | 
 |  |  |      * @param ifsInventoryQuantityDto | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto); | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |      */ | 
 |  |  |     IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto); | 
 |  |  |  | 
 |  |  |     int inspectionReport(List<Long> ids); | 
 |  |  |     int inspectionReport(List<Long> ids,String orderType); | 
 |  |  |  | 
 |  |  |     int revokeInspectionReport(Long id); | 
 |  |  |  | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.service.impl; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto; | 
 |  |  | import com.ruoyi.basic.mapper.StandardTreeMapper; | 
 |  |  | import com.ruoyi.common.enums.OrderType; | 
 |  |  | import com.ruoyi.common.utils.QueryWrappers; | 
 |  |  | import com.ruoyi.inspect.service.IfsOrderInspectionService; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * éå®è®¢åæ¥æ£service | 
 |  |  |  */ | 
 |  |  | @Slf4j | 
 |  |  | @Service | 
 |  |  | public class IfsOrderInspectionServiceImpl implements IfsOrderInspectionService { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private StandardTreeMapper standardTreeMapper; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) { | 
 |  |  |         // todo: åªçæ | 
 |  |  |         String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate(); | 
 |  |  |         String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate(); | 
 |  |  |         ifsInventoryQuantityDto.setBeginDeclareDate(null); | 
 |  |  |         ifsInventoryQuantityDto.setEndDeclareDate(null); | 
 |  |  |         IPage<IfsInventoryQuantitySupplierDto> ifsByOver = standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate); | 
 |  |  |         ifsByOver.getRecords().forEach(r->r.setOrderTypeName(OrderType.getLabelByValue(r.getOrderType()))); | 
 |  |  |         return ifsByOver; | 
 |  |  |     } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.service.impl; | 
 |  |  |  | 
 |  |  | import cn.hutool.core.bean.BeanUtil; | 
 |  |  | import cn.hutool.json.JSONUtil; | 
 |  |  | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
 |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
 |  |  | import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper; | 
 |  |  | import com.ruoyi.basic.pojo.IfsInventoryQuantity; | 
 |  |  | import com.ruoyi.common.core.domain.Result; | 
 |  |  | import com.ruoyi.common.utils.api.IfsApiUtils; | 
 |  |  | import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO; | 
 |  |  | import com.ruoyi.inspect.mapper.IfsSplitOrderRecordMapper; | 
 |  |  | import com.ruoyi.inspect.pojo.IfsPartPropsRecord; | 
 |  |  | import com.ruoyi.inspect.pojo.IfsSplitOrderRecord; | 
 |  |  | import com.ruoyi.inspect.service.IfsPartPropsRecordService; | 
 |  |  | import com.ruoyi.inspect.mapper.IfsPartPropsRecordMapper; | 
 |  |  | 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.util.*; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | * @author 27233 | 
 |  |  | * @description é对表ãifs_part_props_record(ifs订åé¶ä»¶å±æ§è®°å½è¡¨)ãçæ°æ®åºæä½Serviceå®ç° | 
 |  |  | * @createDate 2025-10-23 15:00:34 | 
 |  |  | */ | 
 |  |  | @Slf4j | 
 |  |  | @Service | 
 |  |  | public class IfsPartPropsRecordServiceImpl extends ServiceImpl<IfsPartPropsRecordMapper, IfsPartPropsRecord> | 
 |  |  |     implements IfsPartPropsRecordService{ | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IfsApiUtils ifsApiUtils; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IfsInventoryQuantityMapper ifsInventoryQuantityMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IfsSplitOrderRecordMapper ifsSplitOrderRecordMapper; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional(rollbackFor = Exception.class) | 
 |  |  |     public boolean saveOrUpdateProps(IfsPartPropsRecordDTO ifsPartPropsRecord) { | 
 |  |  |         if(Objects.isNull(ifsPartPropsRecord)){ | 
 |  |  |             throw new RuntimeException("åæ°ä¸è½ä¸ºç©º"); | 
 |  |  |         } | 
 |  |  |         //å¤ææ¯æ°å¢è¿æ¯æ´æ° | 
 |  |  |         String actionType = Objects.isNull(ifsPartPropsRecord.getId())?"New":"Modify"; | 
 |  |  |         Map<String, Object> inAttrMap = new HashMap<>(); | 
 |  |  |         inAttrMap.put("RECORD_ID", UUID.randomUUID().toString()); | 
 |  |  |         inAttrMap.put("SYSCODE", "LIMS"); | 
 |  |  |         inAttrMap.put("SYSMODEL", "åºåç©ææ¹æ¬¡å±æ§ä¿®æ¹"); | 
 |  |  |         HashMap<String, Object> batchInfoMap = new HashMap<>(); | 
 |  |  |         batchInfoMap.put("CONTRACT","ZTNS");//å | 
 |  |  |         batchInfoMap.put("PART_NO",ifsPartPropsRecord.getPartNo());//é¶ä»¶å· | 
 |  |  |         batchInfoMap.put("LOT_BATCH_NO",ifsPartPropsRecord.getLotBatchNo());//æ¹æ¬¡å· | 
 |  |  |         batchInfoMap.put("ATTR1",ifsPartPropsRecord.getDrumNo());//è½½å
·ç¼å· | 
 |  |  |         batchInfoMap.put("ATTR2",ifsPartPropsRecord.getStartMeterMark());//èµ·å§ç±³æ  | 
 |  |  |         batchInfoMap.put("ATTR3",ifsPartPropsRecord.getEndMeterMark());//æªæ¢ç±³æ  | 
 |  |  |         batchInfoMap.put("ATTR4", ifsPartPropsRecord.getInsulationColor());//ç»ç¼é¢è² | 
 |  |  |         batchInfoMap.put("ATTR5",ifsPartPropsRecord.getOuterColor());//夿¤é¢è² | 
 |  |  |         batchInfoMap.put("ATTR8",ifsPartPropsRecord.getLetteringInfo());//å°åä¿¡æ¯ | 
 |  |  |         batchInfoMap.put("ACTION_TYPE",actionType);//æä½ç±»å | 
 |  |  |         inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap)); | 
 |  |  |         Result result = ifsApiUtils.importPartLotAttr(JSONUtil.toJsonStr(inAttrMap)); | 
 |  |  |         if(result.getCode()!=200){ | 
 |  |  |             throw new RuntimeException("åºåç©ææ¹æ¬¡å±æ§æ´æ°å¤±è´¥ï¼"+result.getMessage()); | 
 |  |  |         } | 
 |  |  |         return this.saveOrUpdate(ifsPartPropsRecord); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IfsPartPropsRecord getOneByIfsId(Long ifsId) { | 
 |  |  |         //æ¥è¯¢ifs订åä¿¡æ¯ | 
 |  |  |         IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsId); | 
 |  |  |         if(Objects.isNull(ifsInventoryQuantity)){ | 
 |  |  |             throw new RuntimeException("æªæ¾å°å¯¹åºçIFS订åä¿¡æ¯"); | 
 |  |  |         } | 
 |  |  |         //夿æ¯å¦æ¯æå订å | 
 |  |  |         if(ifsInventoryQuantity.getIsSplitOrder().equals(1)){ | 
 |  |  |             //æ¥è¯¢æåè®°å½ | 
 |  |  |             IfsSplitOrderRecord splitRecord = ifsSplitOrderRecordMapper.selectOne(Wrappers.<IfsSplitOrderRecord>lambdaQuery() | 
 |  |  |                     .eq(IfsSplitOrderRecord::getOrderNo, ifsInventoryQuantity.getOrderNo()) | 
 |  |  |                     .eq(IfsSplitOrderRecord::getPartNo, ifsInventoryQuantity.getPartNo()) | 
 |  |  |                     .eq(IfsSplitOrderRecord::getReleaseNo, ifsInventoryQuantity.getReleaseNo()) | 
 |  |  |                     .eq(IfsSplitOrderRecord::getLineNo, ifsInventoryQuantity.getLineNo()) | 
 |  |  |                     .eq(IfsSplitOrderRecord::getReceiptNo, ifsInventoryQuantity.getReceiptNo()) | 
 |  |  |                     .eq(IfsSplitOrderRecord::getLotBatchNo, ifsInventoryQuantity.getUpdateBatchNo()) | 
 |  |  |                     .eq(IfsSplitOrderRecord::getOrderNo, ifsInventoryQuantity.getOrderNo()) | 
 |  |  |             ); | 
 |  |  |             if(Objects.isNull(splitRecord)){ | 
 |  |  |                 throw new RuntimeException("æªæ¾å°é¶ä»¶çæåä¿¡æ¯"); | 
 |  |  |             } | 
 |  |  |             IfsPartPropsRecord ifsPartPropsRecord = new IfsPartPropsRecord(); | 
 |  |  |             ifsPartPropsRecord.setDrumNo(splitRecord.getDrumNo()); | 
 |  |  |             ifsPartPropsRecord.setLetteringInfo(splitRecord.getLetteringInfo()); | 
 |  |  |             ifsPartPropsRecord.setInsulationColor(splitRecord.getInsulationColor()); | 
 |  |  |             ifsPartPropsRecord.setOuterColor(splitRecord.getOuterColor()); | 
 |  |  |             ifsPartPropsRecord.setDrumNo(splitRecord.getDrumNo()); | 
 |  |  |             ifsPartPropsRecord.setDrumNo(splitRecord.getDrumNo()); | 
 |  |  |             return ifsPartPropsRecord; | 
 |  |  |         } | 
 |  |  |         return this.getOne(Wrappers.<IfsPartPropsRecord>lambdaQuery().eq(IfsPartPropsRecord::getIfsInventoryId,ifsId).last("limit 1")); | 
 |  |  |     } | 
 |  |  | } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 
 |  |  | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.aspose.words.License; | 
 |  |  | import com.aspose.words.SaveFormat; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | 
 |  |  | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; | 
 |  |  | 
 |  |  |     public IPage<InsOrderPlanVO> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) { | 
 |  |  |         // todo: ä»
çèªå·±æè
å®éªå®¤ | 
 |  |  |         //è·åå½å人æå±å®éªå®¤id | 
 |  |  |  | 
 |  |  |         String laboratory = null; | 
 |  |  |  | 
 |  |  |         String userName = null; | 
 |  |  |         Integer userId = null; | 
 |  |  |         if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) { | 
 |  |  | 
 |  |  |         Integer isCheck = insOrderPlanDTO.getIsCheck(); | 
 |  |  |         insOrderPlanDTO.setIsCheck(null); | 
 |  |  |         String sonLaboratory = insOrderPlanDTO.getSonLaboratory();//è¯éªå®¤ | 
 |  |  |         QueryWrapper<InsOrderPlanDTO> queryWrapper = QueryWrappers.queryWrappers(insOrderPlanDTO); | 
 |  |  |         if(ObjectUtils.isEmpty(insOrderPlanDTO.getTypeSource())){ | 
 |  |  |             queryWrapper.isNull("ifs_inventory_id");//å§æè¯éªæ¥è¯¢éifsæ¥æ£è®¢å | 
 |  |  |         }else{ | 
 |  |  |             queryWrapper.isNotNull("ifs_inventory_id"); | 
 |  |  |         } | 
 |  |  |         IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page, | 
 |  |  |                 QueryWrappers.queryWrappers(insOrderPlanDTO), | 
 |  |  |                 queryWrapper, | 
 |  |  |                 userName, | 
 |  |  |                 userId, | 
 |  |  |                 sonLaboratory, | 
 
 |  |  | 
 |  |  | import com.ruoyi.common.constant.InsOrderTypeConstants; | 
 |  |  | import com.ruoyi.common.core.domain.Result; | 
 |  |  | import com.ruoyi.common.core.domain.entity.User; | 
 |  |  | import com.ruoyi.common.enums.OrderType; | 
 |  |  | import com.ruoyi.common.numgen.NumberGenerator; | 
 |  |  | import com.ruoyi.common.utils.*; | 
 |  |  | import com.ruoyi.common.utils.api.IfsApiUtils; | 
 |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |         //æ¯å¦ä¸ºåææä¸å | 
 |  |  |         if (insOrder.getTypeSource() != null && insOrder.getTypeSource().equals(1)) { | 
 |  |  |             // åææä¸å: å§æäººå°±æ¯æ¥æ£äºº, ç产åä½å°±æ¯ä¾åºååä½ | 
 |  |  |  | 
 |  |  |         //åææä¸åæå¤è´æåä¸å | 
 |  |  |         if (Objects.nonNull(insOrder.getTypeSource())&&Objects.nonNull(insOrder.getIfsInventoryId())) { | 
 |  |  |             // å§æäººå°±æ¯æ¥æ£äºº, ç产åä½å°±æ¯ä¾åºååä½ | 
 |  |  |             IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId()); | 
 |  |  |             Integer declareUserId = ifsInventoryQuantity.getDeclareUserId(); | 
 |  |  |             User user = userMapper.selectById(declareUserId); | 
 |  |  | 
 |  |  |             upInsOrderOfState(insOrder); | 
 |  |  |  | 
 |  |  |             // åé
æ£éªäºº | 
 |  |  |             upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "åææ"); | 
 |  |  |             String sonLaboratory = insOrder.getTypeSource().equals(1)?"åææ":"æåå®éªå®¤"; | 
 |  |  |             upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), sonLaboratory); | 
 |  |  |  | 
 |  |  |             // æ ¹æ®é¶ä»¶å·å¤ææ¯å¦æ¯è¾
æ | 
 |  |  |             boolean isRaw = false; | 
 |  |  |             StructureTestObject productObject = insOrderMapper.selectProductByPartNo(ifsInventoryQuantity.getPartNo()); | 
 |  |  |             // æ¥è¯¢äº§å | 
 |  |  |             if (productObject != null && StrUtil.isNotBlank(productObject.getObjectType()) && productObject.getObjectType().equals("1")) { | 
 |  |  |                 isRaw = true; | 
 |  |  |             } else { | 
 |  |  |             // æ¥è¯¢å¯¹è±¡ | 
 |  |  |                 StructureTestObject testObject = insOrderMapper.selectByPartNo(ifsInventoryQuantity.getPartNo()); | 
 |  |  |                 if (testObject != null && StrUtil.isNotBlank(testObject.getObjectType()) && testObject.getObjectType().equals("1")) { | 
 |  |  |             //æ¯å¦ä¸ºåææä¸å | 
 |  |  |             if(insOrder.getTypeSource().equals(1)){ | 
 |  |  |                 // æ ¹æ®é¶ä»¶å·å¤ææ¯å¦æ¯è¾
æ | 
 |  |  |                 boolean isRaw = false; | 
 |  |  |                 StructureTestObject productObject = insOrderMapper.selectProductByPartNo(ifsInventoryQuantity.getPartNo()); | 
 |  |  |                 // æ¥è¯¢äº§å | 
 |  |  |                 if (productObject != null && StrUtil.isNotBlank(productObject.getObjectType()) && productObject.getObjectType().equals("1")) { | 
 |  |  |                     isRaw = true; | 
 |  |  |                 } else { | 
 |  |  |                 // æ¥è¯¢å¯¹è±¡ | 
 |  |  |                     StructureTestObject testObject = insOrderMapper.selectByPartNo(ifsInventoryQuantity.getPartNo()); | 
 |  |  |                     if (testObject != null && StrUtil.isNotBlank(testObject.getObjectType()) && testObject.getObjectType().equals("1")) { | 
 |  |  |                         isRaw = true; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if (isRaw) { | 
 |  |  |                 // è·åå½åå£åº¦çå¼å§æ¶é´åç»ææ¶é´ | 
 |  |  |                 LocalDateTime now = LocalDateTime.now(); | 
 |  |  |                 // è·åå½åæä»½ | 
 |  |  |                 int month = now.getMonthValue(); | 
 |  |  |                 // ç¡®å®å½åå£åº¦çå¼å§æä»½ | 
 |  |  |                 int startMonth = (month - 1) / 3 * 3 + 1; | 
 |  |  |                 // æé å£åº¦çå¼å§æ¶é´ | 
 |  |  |                 LocalDateTime startOfQuarter = LocalDateTime.of(now.getYear(), Month.of(startMonth), 1, 0, 0); | 
 |  |  |                 // è®¡ç®ä¸ä¸ä¸ªå£åº¦çå¼å§æ¶é´ | 
 |  |  |                 LocalDateTime startOfNextQuarter = startOfQuarter.plusMonths(3); | 
 |  |  |                 // è®¡ç®å½åå£åº¦çç»ææ¶é´ | 
 |  |  |                 LocalDateTime endOfQuarter = startOfNextQuarter.minusSeconds(1); | 
 |  |  |                 if (isRaw) { | 
 |  |  |                     // è·åå½åå£åº¦çå¼å§æ¶é´åç»ææ¶é´ | 
 |  |  |                     LocalDateTime now = LocalDateTime.now(); | 
 |  |  |                     // è·åå½åæä»½ | 
 |  |  |                     int month = now.getMonthValue(); | 
 |  |  |                     // ç¡®å®å½åå£åº¦çå¼å§æä»½ | 
 |  |  |                     int startMonth = (month - 1) / 3 * 3 + 1; | 
 |  |  |                     // æé å£åº¦çå¼å§æ¶é´ | 
 |  |  |                     LocalDateTime startOfQuarter = LocalDateTime.of(now.getYear(), Month.of(startMonth), 1, 0, 0); | 
 |  |  |                     // è®¡ç®ä¸ä¸ä¸ªå£åº¦çå¼å§æ¶é´ | 
 |  |  |                     LocalDateTime startOfNextQuarter = startOfQuarter.plusMonths(3); | 
 |  |  |                     // è®¡ç®å½åå£åº¦çç»ææ¶é´ | 
 |  |  |                     LocalDateTime endOfQuarter = startOfNextQuarter.minusSeconds(1); | 
 |  |  |  | 
 |  |  |                 // æ ¹æ®ä¸åçè§æ ¼åå·å¤ææ¯å¦ä¸ºå£åº¦é¦æ¬¡åºç° | 
 |  |  |                 Integer count = ifsInventoryQuantityMapper.selectIsFirst(insOrder.getPartDetail(), | 
 |  |  |                         ifsInventoryQuantity.getSupplierName(), | 
 |  |  |                         startOfNextQuarter, | 
 |  |  |                         endOfQuarter); | 
 |  |  |                     // æ ¹æ®ä¸åçè§æ ¼åå·å¤ææ¯å¦ä¸ºå£åº¦é¦æ¬¡åºç° | 
 |  |  |                     Integer count = ifsInventoryQuantityMapper.selectIsFirst(insOrder.getPartDetail(), | 
 |  |  |                             ifsInventoryQuantity.getSupplierName(), | 
 |  |  |                             startOfNextQuarter, | 
 |  |  |                             endOfQuarter); | 
 |  |  |  | 
 |  |  |                 if(count == 0) { | 
 |  |  |                     ifsInventoryQuantity.setIsFirst(1); | 
 |  |  |                     ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate() | 
 |  |  |                             .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()) | 
 |  |  |                             .set(IfsInventoryQuantity::getIsFirst, 1)); | 
 |  |  |                     if(count == 0) { | 
 |  |  |                         ifsInventoryQuantity.setIsFirst(1); | 
 |  |  |                         ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate() | 
 |  |  |                                 .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()) | 
 |  |  |                                 .set(IfsInventoryQuantity::getIsFirst, 1)); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |          * TODO åç»éè¦è°ç¨IFSçæ¥å£ ç§»å
¥çåºä½å· toLocation | 
 |  |  |          */ | 
 |  |  |         // æ£éªåç§»åº | 
 |  |  |         toLocation = "1301"; | 
 |  |  |         //1301:åææåæ ¼åºï¼CP-02-001:æååº | 
 |  |  |         toLocation = StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.RAW.getValue())?"1301":"CP-02-001"; | 
 |  |  |         Map<String, Object> moveResultMap = new HashMap<>(); | 
 |  |  |         List<Map<String, Object>> moveResultList = new ArrayList<>(); | 
 |  |  |         Map<String, Object> moveMap = new HashMap<>(); | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.inspect.service.impl; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantityDto; | 
 |  |  | import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto; | 
 |  |  | import com.ruoyi.basic.mapper.StandardTreeMapper; | 
 |  |  | import com.ruoyi.basic.pojo.IfsInventoryQuantity; | 
 |  |  | import com.ruoyi.common.enums.OrderType; | 
 |  |  | import com.ruoyi.common.utils.QueryWrappers; | 
 |  |  | import com.ruoyi.inspect.service.OutsourcingFinishProductInspectionService; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * å¤è´æåæ£éªserviceImpl | 
 |  |  |  */ | 
 |  |  | @Slf4j | 
 |  |  | @Service | 
 |  |  | public class OutsourcingFinishProductInspectionServiceImpl implements OutsourcingFinishProductInspectionService { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private StandardTreeMapper standardTreeMapper; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IPage<IfsInventoryQuantity> getWarehouseSubmit(Page page, IfsInventoryQuantity ifsInventoryQuantity) { | 
 |  |  |         ifsInventoryQuantity.setOrderType(OrderType.WG.getValue()); | 
 |  |  |         return standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) { | 
 |  |  |         String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate(); | 
 |  |  |         String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate(); | 
 |  |  |         ifsInventoryQuantityDto.setBeginDeclareDate(null); | 
 |  |  |         ifsInventoryQuantityDto.setEndDeclareDate(null); | 
 |  |  |         ifsInventoryQuantityDto.setOrderType(OrderType.WG.getValue()); | 
 |  |  |         IPage<IfsInventoryQuantitySupplierDto> ifsByOver = standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate); | 
 |  |  |         ifsByOver.getRecords().forEach(r->r.setOrderTypeName(OrderType.getLabelByValue(r.getOrderType()))); | 
 |  |  |         return ifsByOver; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto) { | 
 |  |  |         ifsInventoryQuantityDto.setOrderType(OrderType.WG.getValue()); | 
 |  |  |         return standardTreeMapper.getIfsByStateOne(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import com.ruoyi.common.core.domain.Result; | 
 |  |  | import com.ruoyi.common.core.domain.entity.User; | 
 |  |  | import com.ruoyi.common.config.WechatProperty; | 
 |  |  | import com.ruoyi.common.enums.OrderType; | 
 |  |  | import com.ruoyi.common.utils.LimsDateUtil; | 
 |  |  | import com.ruoyi.common.utils.QueryWrappers; | 
 |  |  | import com.ruoyi.common.utils.SecurityUtils; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IPage<IfsInventoryQuantity> getWarehouseSubmit(IPage<IfsInventoryQuantity> page, IfsInventoryQuantity ifsInventoryQuantity) { | 
 |  |  |         if(ifsInventoryQuantity.getIsInspect().equals(1)){ | 
 |  |  |             ifsInventoryQuantity.setOrderType(OrderType.RAW.getValue()); | 
 |  |  |         } | 
 |  |  |         return standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto) { | 
 |  |  |         ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue()); | 
 |  |  |         return standardTreeMapper.getIfsByStateOne(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public int inspectionReport(List<Long> ids) { | 
 |  |  |     public int inspectionReport(List<Long> ids,String orderType) { | 
 |  |  |         Integer userId = SecurityUtils.getUserId().intValue(); | 
 |  |  |         ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate() | 
 |  |  |                 .in(IfsInventoryQuantity::getId, ids) | 
 |  |  |                 .set(IfsInventoryQuantity::getDeclareUser, userMapper.selectById(userId).getName()) | 
 |  |  |                 .set(IfsInventoryQuantity::getDeclareUserId, userId) | 
 |  |  |                 .set(IfsInventoryQuantity::getIsInspect, 1) | 
 |  |  |                 .set(IfsInventoryQuantity::getOrderType,orderType) | 
 |  |  |                 .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now()) | 
 |  |  |         ); | 
 |  |  |         threadPoolTaskExecutor.execute(() -> { | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public int inspectionReportOne(IfsInventoryQuantity ifsInventoryQuantity) { | 
 |  |  |         Integer userId = SecurityUtils.getUserId().intValue(); | 
 |  |  |         boolean validateValue = OrderType.validateValue(ifsInventoryQuantity.getOrderType()); | 
 |  |  |         if(!validateValue){ | 
 |  |  |             throw new ErrorException("æ¥æ£å¤±è´¥ï¼éæ³çéå®è®¢ååç±»æä¸¾"); | 
 |  |  |         } | 
 |  |  |         //æ¹æ¬¡å·åæ¯è½¬å¤§å | 
 |  |  |         ifsInventoryQuantity.setUpdateBatchNo(ifsInventoryQuantity.getUpdateBatchNo().toUpperCase(Locale.ROOT)); | 
 |  |  |         ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate() | 
 |  |  |                 .eq(IfsInventoryQuantity::getId, ifsInventoryQuantity.getId()) | 
 |  |  |                 .set(IfsInventoryQuantity::getDeclareUser, userMapper.selectById(userId).getName()) | 
 |  |  | 
 |  |  |                 .set(IfsInventoryQuantity::getIsInspect, 1) | 
 |  |  |                 .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now()) | 
 |  |  |                 .set(IfsInventoryQuantity::getUpdateBatchNo, ifsInventoryQuantity.getUpdateBatchNo()) | 
 |  |  |                 .set(IfsInventoryQuantity::getOrderType,ifsInventoryQuantity.getOrderType()) | 
 |  |  |         ); | 
 |  |  |  | 
 |  |  |         threadPoolTaskExecutor.execute(() -> { | 
 |  |  | 
 |  |  |         String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate(); | 
 |  |  |         ifsInventoryQuantityDto.setBeginDeclareDate(null); | 
 |  |  |         ifsInventoryQuantityDto.setEndDeclareDate(null); | 
 |  |  |  | 
 |  |  |         ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue()); | 
 |  |  |         IPage<IfsInventoryQuantitySupplierDto> ifsByOver = standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate); | 
 |  |  |         ifsByOver.getRecords().forEach(r->r.setOrderTypeName(OrderType.getLabelByValue(r.getOrderType()))); | 
 |  |  |         return ifsByOver; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         ifsInventoryQuantity.setIsSource(0); | 
 |  |  |         ifsInventoryQuantity.setState(0); | 
 |  |  |         ifsInventoryQuantity.setIsFinish(0); | 
 |  |  |         if(!OrderType.validateValue(ifsInventoryQuantity.getOrderType())){ | 
 |  |  |             throw new ErrorException("æ°å¢æ¥æ£ä¿¡æ¯å¤±è´¥ï¼éæ³çéå®è®¢ååç±»æä¸¾"); | 
 |  |  |         } | 
 |  |  |         ifsInventoryQuantityMapper.insert(ifsInventoryQuantity); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate(); | 
 |  |  |         ifsInventoryQuantityDto.setBeginDeclareDate(null); | 
 |  |  |         ifsInventoryQuantityDto.setEndDeclareDate(null); | 
 |  |  |  | 
 |  |  |         ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue()); | 
 |  |  |         return standardTreeMapper.getIfsByQuarter(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         if(Objects.nonNull(splitOrderList) && !splitOrderList.isEmpty()){ | 
 |  |  |             List<Long> ids = splitOrderList.stream().map(IfsInventoryQuantity::getId).collect(Collectors.toList()); | 
 |  |  |             ids.add(ifsInventoryQuantity.getId()); | 
 |  |  |             this.inspectionReport(ids); | 
 |  |  |             this.inspectionReport(ids,OrderType.RAW.getValue()); | 
 |  |  |         } | 
 |  |  |         //å¾é忥å°MESï¼ä¿å订åæåè®°å½ | 
 |  |  |         if(orderSplitDTO.getPushToMes()){ | 
 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty("æ¯å¦æ¯æå订å(0:妠1:æ¯)") | 
 |  |  |     private Integer isSplitOrder; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * ifs订ååç±»(01raw:åææ 02wg:å¤è´æå) | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty("ifs订ååç±»(01raw:åææ 02wg:å¤è´æå)") | 
 |  |  |     private String ifsOrderType; | 
 |  |  |  | 
 |  |  |     private String partNo; | 
 |  |  |  | 
 |  |  |     private String lotBatchNo; | 
 |  |  |  | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | <?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.inspect.mapper.IfsPartPropsRecordMapper"> | 
 |  |  |  | 
 |  |  |     <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.IfsPartPropsRecord"> | 
 |  |  |             <id property="id" column="id" jdbcType="BIGINT"/> | 
 |  |  |             <result property="ifsInventoryId" column="ifs_inventory_id" jdbcType="BIGINT"/> | 
 |  |  |             <result property="drumNo" column="drum_no" jdbcType="VARCHAR"/> | 
 |  |  |             <result property="startMeterMark" column="start_meter_mark" jdbcType="DECIMAL"/> | 
 |  |  |             <result property="endMeterMark" column="end_meter_mark" jdbcType="DECIMAL"/> | 
 |  |  |             <result property="insulationColor" column="insulation_color" jdbcType="VARCHAR"/> | 
 |  |  |             <result property="outerColor" column="outer_color" jdbcType="VARCHAR"/> | 
 |  |  |             <result property="letteringInfo" column="lettering_info" jdbcType="VARCHAR"/> | 
 |  |  |             <result property="partPropsFlag" column="part_props_flag" jdbcType="BIT"/> | 
 |  |  |     </resultMap> | 
 |  |  |  | 
 |  |  |     <sql id="Base_Column_List"> | 
 |  |  |         id,ifs_inventory_id,drum_no, | 
 |  |  |         start_meter_mark,end_meter_mark,insulation_color, | 
 |  |  |         outer_color,lettering_info,part_props_flag | 
 |  |  |     </sql> | 
 |  |  | </mapper> | 
 
 |  |  | 
 |  |  |                 isor.insulation_color, | 
 |  |  |                 isor.outer_color, | 
 |  |  |                 isor.drum_no, | 
 |  |  |                 iiq.is_split_order | 
 |  |  |                 iiq.is_split_order, | 
 |  |  |                 iiq.order_type AS ifs_order_type, | 
 |  |  |                 iiq.part_no, | 
 |  |  |                 iiq.update_batch_no AS lot_batch_no | 
 |  |  |         from ins_order io left join ifs_inventory_quantity iiq on io.ifs_inventory_id=iiq.id | 
 |  |  |                           left join ifs_split_order_record isor | 
 |  |  |                                     on iiq.order_no=isor.order_no | 
 
 |  |  | 
 |  |  | import com.ruoyi.performance.dto.AuxiliaryOriginalHoursLookDto; | 
 |  |  | import com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto; | 
 |  |  | import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours; | 
 |  |  | import org.apache.ibatis.annotations.Mapper; | 
 |  |  | import org.apache.ibatis.annotations.Param; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | 
 |  |  |  * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ | 
 |  |  |  * @since 2024-05-28 03:48:48 | 
 |  |  |  */ | 
 |  |  | @Mapper | 
 |  |  | public interface AuxiliaryOutputWorkingHoursMapper extends BaseMapper<AuxiliaryOutputWorkingHours> { | 
 |  |  |  | 
 |  |  |     IPage<AuxiliaryOutputWorkingHoursDto> selectAuxiliaryOutputWorkingHours(Page page, @Param("ew") QueryWrapper<AuxiliaryOutputWorkingHoursDto> ew, @Param("ids") List<Long> ids); | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.ruoyi.common.enums; | 
 |  |  |  | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  |  | 
 |  |  | public enum OrderType { | 
 |  |  |  | 
 |  |  |     RAW("åææ","01raw"), | 
 |  |  |     WG("å¤è´æå","02wg"); | 
 |  |  |  | 
 |  |  |     private String label,value; | 
 |  |  |  | 
 |  |  |     public String getLabel() { | 
 |  |  |         return label; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getValue() { | 
 |  |  |         return value; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     OrderType(String label, String value) { | 
 |  |  |         this.label = label; | 
 |  |  |         this.value = value; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static boolean validateValue(String value){ | 
 |  |  |         boolean flag = false; | 
 |  |  |         for (OrderType orderType : OrderType.values()) { | 
 |  |  |             if(StringUtils.isNotBlank(value)&&StringUtils.equals(orderType.getValue(),value)){ | 
 |  |  |                 flag = true; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return flag; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static String getLabelByValue(String value){ | 
 |  |  |         for (OrderType orderType : OrderType.values()) { | 
 |  |  |             if(validateValue(value)&&StringUtils.equals(orderType.getValue(), value)){ | 
 |  |  |                 return orderType.getLabel(); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return ""; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |         return getResult("QUERY_INVENTORY_INFO_STD", inAttr, ifsProperties.getCustorderPort(), "æ¥è¯¢åºåä¿¡æ¯-->"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * åºåç©ææ¹æ¬¡å±æ§æ°å¢ä¿®æ¹æ¥å£ | 
 |  |  |      * | 
 |  |  |      * @param inAttr | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public Result importPartLotAttr(String inAttr) { | 
 |  |  |         return getResult("IMPORT_PART_LOT_ATTR_STD", inAttr, ifsProperties.getCustorder(), "åºåç©ææ¹æ¬¡å±æ§æ°å¢ä¿®æ¹æ¥å£-->"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * éç¨æ¥å£ |