| ¶Ô±ÈÐÂÎļþ |
| | |
| | | alter table quality_inspect |
| | | add defective_quantity decimal(18, 2) null comment 'ä¸è¯æ°é', |
| | | add defective_reason varchar(255) default '' not null comment 'ä¸è¯åå '; |
| | | |
| | | alter table quality_unqualified |
| | | add quarantine_lifted boolean not null default false comment 'æ¯å¦å·²åæ¶é离'; |
| | |
| | | PRODUCTION_REPORT_STOCK_IN("2", "ç产æ¥å·¥-å
¥åº"), |
| | | PURCHASE_STOCK_IN("7", "éè´-å
¥åº"), |
| | | QUALITYINSPECT_STOCK_IN("6", "è´¨æ£-åæ ¼å
¥åº"), |
| | | DEFECTIVE_PASS("11", "ä¸åæ ¼-è®©æ¥æ¾è¡"); |
| | | DEFECTIVE_PASS("11", "ä¸åæ ¼-è®©æ¥æ¾è¡"), |
| | | LIFT_THE_QUARANTINE("12", "ä¸åæ ¼-åæ¶é离"); |
| | | |
| | | |
| | | private final String code; |
| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductProcessRouteItemDto; |
| | | import com.ruoyi.production.dto.ProductionProductMainDto; |
| | | import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto; |
| | | import com.ruoyi.production.service.ProductionProductMainService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | @RequestMapping("productionProductMain") |
| | | @RequestMapping("/productionProductMain") |
| | | @RestController |
| | | @Api(value = "ç产æ¥å·¥") |
| | | public class ProductionProductMainController { |
| | |
| | | * @param productionProductMainDto |
| | | * @return |
| | | */ |
| | | @GetMapping("listPage") |
| | | @GetMapping("/listPage") |
| | | public R page(Page<ProductionProductMainDto> page, ProductionProductMainDto productionProductMainDto) { |
| | | return R.ok(productionProductMainService.listPageProductionProductMainDto(page, productionProductMainDto)); |
| | | } |
| | |
| | | * @param productionProductMainDto |
| | | * @return |
| | | */ |
| | | @PostMapping("addProductMain") |
| | | @PostMapping("/addProductMain") |
| | | public R addProductMain(@RequestBody ProductionProductMainDto productionProductMainDto) { |
| | | return R.ok(productionProductMainService.addProductMain(productionProductMainDto)); |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "å·¥åç±»å æ£å¸¸ /è¿å·¥è¿ä¿®") |
| | | private String workOrderType; |
| | | |
| | | @ApiModelProperty(value = "å·¥åºæåº") |
| | | private Integer dragSort; |
| | | |
| | | @ApiModelProperty(value = "å·¥èºè·¯çº¿ID") |
| | | private Long productRouteId; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å¯ä»¥æ¥å·¥") |
| | | private Boolean isCanReport; |
| | | } |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | |
| | | private BigDecimal workHours; |
| | | private BigDecimal wages; |
| | | |
| | | // å
¶ä»æ°æ® |
| | | private String otherData; |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "æ¥åºæ°é") |
| | | private BigDecimal scrapQty; |
| | | |
| | | @ApiModelProperty(value = "å
¶ä»æ°æ®") |
| | | private String otherData; |
| | | } |
| | |
| | | import com.ruoyi.common.utils.HackLoopTableRenderPolicy; |
| | | import com.ruoyi.common.utils.MatrixToImageWriter; |
| | | import com.ruoyi.production.dto.ProductWorkOrderDto; |
| | | import com.ruoyi.production.mapper.ProductProcessRouteItemMapper; |
| | | import com.ruoyi.production.mapper.ProductWorkOrderFileMapper; |
| | | import com.ruoyi.production.mapper.ProductWorkOrderMapper; |
| | | import com.ruoyi.production.mapper.ProductionProductMainMapper; |
| | | import com.ruoyi.production.pojo.ProductProcessRouteItem; |
| | | import com.ruoyi.production.pojo.ProductWorkOrder; |
| | | import com.ruoyi.production.pojo.ProductWorkOrderFile; |
| | | import com.ruoyi.production.pojo.ProductionProductMain; |
| | | import com.ruoyi.production.service.ProductWorkOrderService; |
| | | import com.ruoyi.quality.pojo.QualityInspectParam; |
| | | import lombok.AllArgsConstructor; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.math.BigDecimal; |
| | | import java.net.URLEncoder; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | |
| | | private ProductWorkOrderMapper productWorkOrdermapper; |
| | | @Autowired |
| | | private ProductWorkOrderFileMapper productWorkOrderFileMapper; |
| | | @Autowired |
| | | private ProductProcessRouteItemMapper productProcessRouteItemMapper; |
| | | @Autowired |
| | | private ProductionProductMainMapper productionProductMainMapper; |
| | | |
| | | @Value("${file.temp-dir}") |
| | | private String tempDir; |
| | | |
| | | @Override |
| | | public IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) { |
| | | return productWorkOrdermapper.pageProductWorkOrder(page, productWorkOrder); |
| | | IPage<ProductWorkOrderDto> productWorkOrderDtoIPage = productWorkOrdermapper.pageProductWorkOrder(page, productWorkOrder); |
| | | productWorkOrderDtoIPage.getRecords().forEach(record -> { |
| | | //æ£æ¥ä¸ä¸ä¸ªå·¥åºæ¯å¦å·²æ¥å·¥ |
| | | Integer currentDragSort = record.getDragSort(); |
| | | if (currentDragSort == null || currentDragSort == 1) { |
| | | record.setIsCanReport(true); |
| | | } else { |
| | | //æ¥æ¾ä¸ä¸ä¸ªå·¥åº |
| | | ProductProcessRouteItem previousItem = productProcessRouteItemMapper.selectOne( |
| | | Wrappers.<ProductProcessRouteItem>lambdaQuery() |
| | | .eq(ProductProcessRouteItem::getProductRouteId, record.getProductRouteId()) |
| | | .eq(ProductProcessRouteItem::getDragSort, currentDragSort - 1) |
| | | ); |
| | | |
| | | if (previousItem != null) { |
| | | //æ£æ¥ä¸ä¸ä¸ªå·¥åºæ¯å¦ææ¥å·¥è®°å½ |
| | | Long count = productionProductMainMapper.selectCount( |
| | | Wrappers.<ProductionProductMain>lambdaQuery() |
| | | .eq(ProductionProductMain::getProductProcessRouteItemId, previousItem.getId()) |
| | | ); |
| | | record.setIsCanReport(count > 0); |
| | | } else { |
| | | record.setIsCanReport(true); |
| | | } |
| | | } |
| | | }); |
| | | return productWorkOrderDtoIPage; |
| | | } |
| | | |
| | | @Override |
| | |
| | | if (productProcessRouteItem == null) { |
| | | throw new RuntimeException("å·¥èºè·¯çº¿é¡¹ä¸åå¨"); |
| | | } |
| | | //æ£æ¥ä¸ä¸ä¸ªå·¥åºæ¯å¦å·²æ¥å·¥ |
| | | Integer currentDragSort = productProcessRouteItem.getDragSort(); |
| | | if (currentDragSort != null && currentDragSort > 1) { |
| | | ProductProcessRouteItem previousItem = productProcessRouteItemMapper.selectOne( |
| | | Wrappers.<ProductProcessRouteItem>lambdaQuery() |
| | | .eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()) |
| | | .eq(ProductProcessRouteItem::getDragSort, currentDragSort - 1) |
| | | ); |
| | | |
| | | if (previousItem != null) { |
| | | //æ£æ¥ä¸ä¸ä¸ªå·¥åºæ¯å¦ææ¥å·¥è®°å½ |
| | | Long count = productionProductMainMapper.selectCount( |
| | | Wrappers.<ProductionProductMain>lambdaQuery() |
| | | .eq(ProductionProductMain::getProductProcessRouteItemId, previousItem.getId()) |
| | | ); |
| | | |
| | | if (count == 0) { |
| | | throw new RuntimeException("ä¸ä¸ä¸ªå·¥åºå°æªæ¥å·¥ï¼ä¸è½è¿è¡å½åå·¥åºæ¥å·¥"); |
| | | } |
| | | } |
| | | } |
| | | //å½åå
·ä½å·¥åº |
| | | ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId()); |
| | | //å·¥èºè·¯çº¿ä¸å½åå·¥åºå¯¹åºç产åºè§æ ¼åå· |
| | |
| | | productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId()); |
| | | productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO); |
| | | productionProductOutput.setScrapQty(dto.getScrapQty() != null ? dto.getScrapQty() : BigDecimal.ZERO); |
| | | productionProductOutput.setOtherData(dto.getOtherData() != null ? dto.getOtherData() : ""); |
| | | productionProductOutputMapper.insert(productionProductOutput); |
| | | //åæ ¼æ°é=æ¥å·¥æ°é-æ¥åºæ°é |
| | | BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty()); |
| | |
| | | qualityInspect.setProcess(process); |
| | | qualityInspect.setInspectState(0); |
| | | qualityInspect.setInspectType(inspectType); |
| | | qualityInspect.setDefectiveQuantity(productionProductOutput.getScrapQty()); |
| | | qualityInspect.setProductMainId(productionProductMain.getId()); |
| | | qualityInspect.setProductModelId(productModel.getId()); |
| | | qualityInspectMapper.insert(qualityInspect); |
| | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * åæææ£éª/è¿ç¨æ£éª/åºåæ£éª |
| | | * åæææ£éª/è¿ç¨æ£éª/æåæ£éª |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/quality/qualityInspect") |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åæ¶é离 |
| | | * @param qualityUnqualified |
| | | * @return |
| | | */ |
| | | @PostMapping("/liftTheQuarantine") |
| | | public AjaxResult liftTheQuarantine(@RequestBody QualityUnqualified qualityUnqualified) { |
| | | return AjaxResult.success(qualityUnqualifiedService.liftTheQuarantine(qualityUnqualified)); |
| | | } |
| | | } |
| | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * è´¨é管ç--åææ/è¿ç¨/åºåæ£éª |
| | | * è´¨é管ç--åææ/è¿ç¨/æåæ£éª |
| | | * quality_inspect |
| | | */ |
| | | @TableName(value = "quality_inspect") |
| | |
| | | private Long id; |
| | | |
| | | /** |
| | | * ç±»å«(0:åæææ£éª;1:è¿ç¨æ£éª;2:åºåæ£éª) |
| | | * ç±»å«(0:åæææ£éª;1:è¿ç¨æ£éª;2:æåæ£éª) |
| | | */ |
| | | @Excel(name = "ç±»å«",readConverterExp = "0=åæææ£éª,1=è¿ç¨æ£éª,2=åºåæ£éª") |
| | | @Excel(name = "ç±»å«",readConverterExp = "0=åæææ£éª,1=è¿ç¨æ£éª,2=æåæ£éª") |
| | | @NotBlank(message = "ç±»å«ä¸è½ä¸ºç©º!!") |
| | | private Integer inspectType; |
| | | |
| | |
| | | private String supplier; |
| | | |
| | | /** |
| | | * 客æ·åç§°(è¿ç¨æ£éª/åºåæ£éª) |
| | | * 客æ·åç§°(è¿ç¨æ£éª/æåæ£éª) |
| | | */ |
| | | @Excel(name = "客æ·åç§°") |
| | | private String customer; |
| | |
| | | private BigDecimal quantity; |
| | | |
| | | /** |
| | | * ä¸è¯æ°é |
| | | */ |
| | | @Excel(name = "ä¸è¯æ°é") |
| | | private BigDecimal defectiveQuantity; |
| | | |
| | | /** |
| | | * ä¸è¯åå |
| | | */ |
| | | @Excel(name = "ä¸è¯åå ") |
| | | private String defectiveReason; |
| | | |
| | | /** |
| | | * æ£æµåä½ |
| | | */ |
| | | @Excel(name = "æ£æµåä½") |
| | |
| | | @ApiModelProperty("ç¶æ") |
| | | private String state; |
| | | |
| | | @ApiModelProperty("ç±»å«(0:åæææ£éª;1:è¿ç¨æ£éª;2:åºåæ£éª)") |
| | | @ApiModelProperty("ç±»å«(0:åæææ£éª;1:è¿ç¨æ£éª;2:æåæ£éª)") |
| | | private Integer inspectType; |
| | | |
| | | @ApiModelProperty("å·¥åºid") |
| | |
| | | |
| | | |
| | | /** |
| | | * ç±»å«(0:åæææ£éª;1:è¿ç¨æ£éª;2:åºåæ£éª) |
| | | * ç±»å«(0:åæææ£éª;1:è¿ç¨æ£éª;2:æåæ£éª) |
| | | */ |
| | | @NotBlank(message = "ç±»å«ä¸è½ä¸ºç©º!!!") |
| | | @Excel(name = "ç±»å«",readConverterExp = "0=åæææ£éª,1=è¿ç¨æ£éª,2=åºåæ£éª") |
| | | @Excel(name = "ç±»å«",readConverterExp = "0=åæææ£éª,1=è¿ç¨æ£éª,2=æåæ£éª") |
| | | private Integer inspectType; |
| | | |
| | | /** |
| | |
| | | private String defectivePhenomena; |
| | | |
| | | /** |
| | | * æ¯å¦å·²åæ¶é离 |
| | | */ |
| | | @Excel(name = "æ¯å¦å·²åæ¶é离") |
| | | private Boolean quarantineLifted; |
| | | |
| | | /** |
| | | * å¤çç»æ |
| | | */ |
| | | @Excel(name = "å¤çç»æ") |
| | |
| | | @Excel(name = "å¤çæ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | private Date dealTime; |
| | | |
| | | |
| | | @Excel(name = "夿³¨") |
| | | private String remark; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | |
| | | @ApiModelProperty("æ¯å¦ä¸åæ ¼å¤çèªå·±æ°å¢") |
| | | @TableField(exist = false) |
| | | private Boolean method; |
| | | |
| | | @ApiModelProperty("å·¥åº") |
| | | @TableField(exist = false) |
| | | private String process; |
| | | } |
| | |
| | | |
| | | int deal(QualityUnqualified qualityUnqualified); |
| | | |
| | | boolean liftTheQuarantine(QualityUnqualified qualityUnqualified); |
| | | |
| | | QualityUnqualified getUnqualified(Integer id); |
| | | } |
| | |
| | | inspectType = "è¿ç¨æ£éª"; |
| | | break; |
| | | case 2: |
| | | inspectType = "åºåæ£éª"; |
| | | inspectType = "æåæ£éª"; |
| | | break; |
| | | } |
| | | List<QualityInspectParam> paramList = qualityInspectParamService.list(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, inspect.getId())); |
| | |
| | | util.exportExcel(response, qualityInspects, "è¿ç¨æ£éªå¯¼åº"); |
| | | break; |
| | | case 2: |
| | | util.exportExcel(response, qualityInspects, "åºåæ£éªå¯¼åº"); |
| | | util.exportExcel(response, qualityInspects, "æåæ£éªå¯¼åº"); |
| | | break; |
| | | } |
| | | |
| | |
| | | import com.ruoyi.stock.service.StockUninventoryService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean liftTheQuarantine(QualityUnqualified qualityUnqualified) { |
| | | QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId()); |
| | | if (unqualified.getQuarantineLifted()) { |
| | | throw new RuntimeException("该ä¸åæ ¼åå·²è¢«åæ¶é离"); |
| | | } |
| | | |
| | | if (unqualified.getDealResult() == null) { |
| | | throw new RuntimeException("该ä¸åæ ¼åæªè¢«å¤ç"); |
| | | } |
| | | |
| | | if (!unqualified.getDealResult().equals("é离")) { |
| | | throw new RuntimeException("该ä¸åæ ¼åæªè¢«é离"); |
| | | } |
| | | |
| | | // åæ¶é离 è°ç¨æäº¤åæ ¼çæ¥å£ |
| | | QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId()); |
| | | if (qualityInspect.getInspectType().equals(2)) { |
| | | stockUtils.addStockNoReview(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.LIFT_THE_QUARANTINE.getCode(), unqualified.getId()); |
| | | } else { |
| | | stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.LIFT_THE_QUARANTINE.getCode(), unqualified.getId()); |
| | | } |
| | | unqualified.setQuarantineLifted(true); |
| | | return qualityUnqualifiedMapper.updateById(unqualified) > 0; |
| | | } |
| | | |
| | | @Override |
| | | public QualityUnqualified getUnqualified(Integer id) { |
| | | return qualityUnqualifiedMapper.getUnqualified(id); |
| | | } |
| | |
| | | pm.unit, |
| | | p.product_name AS productName, |
| | | po.nps_no AS productOrderNpsNo, |
| | | ppri.drag_sort, |
| | | ppri.product_route_id, |
| | | ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus, |
| | | CASE |
| | | WHEN pwo.work_order_no LIKE 'FG%' THEN 'è¿å·¥è¿ä¿®' |
| | |
| | | pm.model as productModelName, |
| | | ppo.quantity, |
| | | ppo.scrap_qty, |
| | | ppo.other_data, |
| | | pm.unit, |
| | | sl.sales_contract_no salesContractNo |
| | | from |
| | |
| | | <result property="quantity" column="quantity"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="otherData" column="other_data"/> |
| | | </resultMap> |
| | | |
| | | <select id="listPageProductionProductOutputDto" resultType="com.ruoyi.production.dto.ProductionProductOutputDto"> |
| | |
| | | qu.deal_result, |
| | | qu.deal_name, |
| | | qu.deal_time, |
| | | qu.quarantine_lifted, |
| | | CASE |
| | | WHEN qu.model = pm.id THEN pm.model |
| | | ELSE qu.model |
| | |
| | | qu.deal_result, |
| | | qu.deal_name, |
| | | qu.deal_time, |
| | | qi.process, |
| | | CASE |
| | | WHEN qu.model = pm.id THEN pm.model |
| | | ELSE qu.model |
| | |
| | | END AS method |
| | | FROM quality_unqualified qu |
| | | LEFT JOIN product_model pm ON qu.model = pm.id |
| | | LEFT JOIN quality_inspect qi ON qu.inspect_id = qi.id |
| | | where |
| | | 1=1 |
| | | and qu.id = #{id} |