docs/quality_unqualified_reject.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,63 @@ # åææ£éªä¸åæ ¼å¤ç-ææ¶ ## æ¶åé¡µé¢ - ä¸åæ ¼ç®¡çå¤çå¼¹çªï¼åææ£éªï¼ ## API | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | POST | /quality/qualityUnqualified/deal | ä¸åæ ¼ç®¡çå¤çï¼æ°å¢"ææ¶"éé¡¹ï¼ | **请æ±åæ°ï¼** | åæ° | ç±»å | å¿ å¡« | 说æ | |------|------|------|------| | id | Long | æ¯ | ä¸åæ ¼è®°å½ID | | dealResult | String | æ¯ | å¤çç»æï¼æ°å¢"ææ¶"é项 | | dealName | String | å¦ | å¤ç人 | | dealTime | Date | å¦ | å¤çæ¥æ | **ååºï¼** `{ "code": 200, "msg": "æä½æå" }` ## å端修æ¹ç¹ ### 1. ä¸åæ ¼å¤çå¼¹çª - å¤çç»æä¸ææ¡ å¨åææ£éªï¼inspectType=0ï¼çä¸åæ ¼å¤çå¼¹çªä¸ï¼å¤çç»æä¸ææ¡æ°å¢"ææ¶"éé¡¹ï¼ ```html <el-select v-model="form.dealResult" placeholder="è¯·éæ©å¤çç»æ"> <el-option label="æ¥åº" value="æ¥åº" /> <el-option label="è®©æ¥æ¾è¡" value="è®©æ¥æ¾è¡" /> <el-option label="ææ¶" value="ææ¶" /> <!-- æ°å¢ --> </el-select> ``` ### 2. å表/详æ - å¤çç»æå±ç¤º å表页å详æ 页ç `dealResult` åæ®µéæ¯ææ¾ç¤º"ææ¶"ç¶æï¼ ```html <el-table-column prop="dealResult" label="å¤çç»æ"> <template slot-scope="scope"> <el-tag v-if="scope.row.dealResult === 'ææ¶'" type="danger">ææ¶</el-tag> <span v-else>{{ scope.row.dealResult }}</span> </template> </el-table-column> ``` ### 3. å¤çé»è¾ å端è°ç¨ `/quality/qualityUnqualified/deal` æ¥å£æ¶ï¼`dealResult` ä¼ å¼ `"ææ¶"` å³å¯ï¼å端ä¼èªå¨ï¼ - å建éè´éè´§åï¼`purchase_return_orders`ï¼ï¼éè´§æ¹å¼=ææ¶ï¼returnType=1ï¼ - å建éè´é货产åæç»ï¼`purchase_return_order_products`ï¼ - ä¸å ¥åºï¼ä¸äº§çå ¥åº/åºåºè®°å½ï¼ - æ´æ°ä¸åæ ¼è®°å½ç¶æä¸º"å·²å¤ç" ## 注æäºé¡¹ - "ææ¶"éé¡¹ä» å¯¹åææ£éªï¼inspectType=0ï¼çä¸åæ ¼è®°å½ææ - ææ¶åä¼èªå¨çæéè´éè´§åå·ï¼CGTLåç¼ï¼ï¼å¯å¨éè´éè´§é¡µé¢æ¥ç - ææ¶ä¸ä¼äº§çä»»ä½åºååå¨ï¼ç©åç´æ¥éåä¾åºå src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -332,6 +332,7 @@ qualityInspect.setInspectState(0); qualityInspect.setInspectType(inspectType); qualityInspect.setProductMainId(productionProductMain.getId()); qualityInspect.setCheckCompany("æ°ç大ç½ç´ 马éè¯å¶åæéå ¬å¸"); qualityInspect.setProductModelId(productModel.getId()); qualityInspectMapper.insert(qualityInspect); List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process); src/main/java/com/ruoyi/project/system/controller/SysUserController.java
@@ -210,6 +210,23 @@ } /** * ä¸é®éç½®ææç¨æ·å¯ç ï¼ä» è¶ çº§ç®¡çåï¼ */ @Log(title = "ç¨æ·ç®¡ç", businessType = BusinessType.UPDATE) @PostMapping("/resetAllPwd") public AjaxResult resetAllPwd() { if (!SysUser.isAdmin(getUserId())) { return error("ä» è¶ çº§ç®¡çå坿§è¡æ¤æä½"); } String defaultPassword = "12345"; String encryptedPwd = SecurityUtils.encryptPassword(defaultPassword); int rows = userService.resetAllUserPwd(encryptedPwd); return success("å·²éç½® " + rows + " ä¸ªç¨æ·çå¯ç 为 " + defaultPassword); } /** * ç¶æä¿®æ¹ */ @PreAuthorize("@ss.hasPermi('system:user:edit')") src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
@@ -110,6 +110,14 @@ public int resetUserPwd(@Param("userName") String userName, @Param("password") String password); /** * éç½®æææªå é¤ç¨æ·çå¯ç * * @param password å¯ç * @return ç»æ */ public int resetAllUserPwd(@Param("password") String password); /** * éè¿ç¨æ·IDå é¤ç¨æ· * * @param userId ç¨æ·ID src/main/java/com/ruoyi/project/system/service/ISysUserService.java
@@ -179,6 +179,14 @@ public int resetUserPwd(String userName, String password); /** * éç½®ææç¨æ·å¯ç 为é»è®¤å¼ * * @param password é»è®¤å¯ç ï¼ææï¼ * @return ç»æ */ public int resetAllUserPwd(String password); /** * éè¿ç¨æ·IDå é¤ç¨æ· * * @param userId ç¨æ·ID src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
@@ -360,6 +360,12 @@ return userMapper.resetUserPwd(userName, password); } @Override public int resetAllUserPwd(String password) { return userMapper.resetAllUserPwd(password); } /** * æ°å¢ç¨æ·è§è²ä¿¡æ¯ * src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -425,6 +425,7 @@ qualityInspect.setUnit(saleProduct.getUnit()); qualityInspect.setQuantity(saleProduct.getQuantity()); qualityInspect.setWarehouse(saleProduct.getStorageLocation()); qualityInspect.setCheckCompany("æ°ç大ç½ç´ 马éè¯å¶åæéå ¬å¸"); qualityInspectMapper.insert(qualityInspect); List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(saleProduct.getProductId(), 0,null); if (qualityTestStandard.size()>0){ src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -7,9 +7,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.mapper.PurchaseReturnOrderProductsMapper; import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.purchase.pojo.PurchaseReturnOrderProducts; import com.ruoyi.purchase.pojo.PurchaseReturnOrders; import com.ruoyi.production.mapper.ProductionOperationTaskMapper; import com.ruoyi.production.mapper.ProductionOrderMapper; import com.ruoyi.production.mapper.ProductionOrderRoutingMapper; @@ -30,10 +37,12 @@ import com.ruoyi.stock.service.StockUninventoryService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.HashMap; @@ -54,6 +63,9 @@ private final ProductionOperationTaskMapper productionOperationTaskMapper; private final StockUninventoryService stockUninventoryService; private final StockInRecordService stockInRecordService; private final PurchaseReturnOrdersMapper purchaseReturnOrdersMapper; private final PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper; private final PurchaseLedgerMapper purchaseLedgerMapper; @Override public IPage<QualityUnqualified> qualityUnqualifiedListPage(Page page, QualityUnqualified qualityUnqualified) { @@ -68,6 +80,7 @@ } @Override @Transactional(rollbackFor = Exception.class) public int deal(QualityUnqualified qualityUnqualified) { QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId()); QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId()); @@ -106,6 +119,9 @@ case "è®©æ¥æ¾è¡": stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId()); break; case "ææ¶": createRejectPurchaseReturn(qualityInspect, qualityUnqualified); break; default: break; @@ -226,6 +242,34 @@ return value == null ? BigDecimal.ZERO : value; } private void createRejectPurchaseReturn(QualityInspect qualityInspect, QualityUnqualified qualityUnqualified) { if (qualityInspect == null) { throw new ServiceException("æå¨æ°å¢çä¸åæ ¼è®°å½ä¸æ¯æææ¶å¤çï¼è¯·éæ©æ¥åºæè®©æ¥æ¾è¡"); } Long supplierId = null; Long purchaseLedgerId = qualityInspect.getPurchaseLedgerId(); if (purchaseLedgerId != null) { PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(purchaseLedgerId); if (purchaseLedger != null) { supplierId = purchaseLedger.getSupplierId(); } } PurchaseReturnOrders returnOrder = new PurchaseReturnOrders(); returnOrder.setReturnType(1); returnOrder.setSupplierId(supplierId); returnOrder.setPurchaseLedgerId(purchaseLedgerId); returnOrder.setPreparedAt(LocalDate.now()); returnOrder.setReturnUserName(qualityUnqualified.getDealName()); returnOrder.setRemark("åææ£éªä¸åæ ¼-ææ¶"); returnOrder.setNo(OrderUtils.countTodayByCreateTime(purchaseReturnOrdersMapper, "CGTL", "no", LocalDateTime.now())); purchaseReturnOrdersMapper.insert(returnOrder); PurchaseReturnOrderProducts product = new PurchaseReturnOrderProducts(); product.setPurchaseReturnOrderId(returnOrder.getId()); product.setReturnQuantity(qualityUnqualified.getQuantity()); product.setStockInRecordId(0L); purchaseReturnOrderProductsMapper.insert(product); } private String resolveProductionBatchNo(Long productionProductMainId, Long qualityInspectId, Long productModelId) { src/main/java/com/ruoyi/quality/utils/QualityInspectHelper.java
@@ -48,6 +48,7 @@ qualityInspect.setProductModelId(saleProduct.getProductModelId()); qualityInspect.setUnit(saleProduct.getUnit()); qualityInspect.setQuantity(saleProduct.getQuantity()); qualityInspect.setCheckCompany("æ°ç大ç½ç´ 马éè¯å¶åæéå ¬å¸"); qualityInspectMapper.insert(qualityInspect); List<QualityTestStandard> qualityTestStandardList = qualityTestStandardMapper src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -181,6 +181,7 @@ } qualityInspectDto.setModel(productModel.getModel()); qualityInspectDto.setUnit(productModel.getUnit()); qualityInspectDto.setCheckCompany("æ°ç大ç½ç´ 马éè¯å¶åæéå ¬å¸"); // åå§åç©ºçæ£éªåæ°å表 qualityInspectDto.setQualityInspectParams(new ArrayList<>()); src/main/resources/mapper/system/SysUserMapper.xml
@@ -97,7 +97,7 @@ </if> <!-- æ°æ®èå´è¿æ»¤ --> ${params.dataScope} ORDER BY u.create_time DESC ORDER BY u.create_time DESC, u.user_id DESC </select> <select id="selectAllocatedList" parameterType="com.ruoyi.project.system.domain.SysUser" resultMap="SysUserResult"> @@ -131,20 +131,20 @@ </if> <!-- æ°æ®èå´è¿æ»¤ --> ${params.dataScope} ORDER BY u.create_time DESC ORDER BY u.create_time DESC, u.user_id DESC </select> <select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult"> <include refid="selectUserVo"/> where u.user_name = #{userName} and u.del_flag = '0' ORDER BY u.create_time DESC ORDER BY u.create_time DESC, u.user_id DESC </select> <select id="selectUserById" parameterType="Long" resultMap="SysUserResult"> <include refid="selectUserVo"/> where u.user_id = #{userId} and u.del_flag = '0' ORDER BY u.create_time DESC ORDER BY u.create_time DESC, u.user_id DESC </select> <select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult"> @@ -169,7 +169,7 @@ </if> and u.del_flag = '0' </where> ORDER BY u.create_time DESC ORDER BY u.create_time DESC, u.user_id DESC </select> <select id="selectRegistrantIds" resultType="com.ruoyi.project.system.domain.SysUser"> SELECT user_id, nick_name FROM sys_user @@ -184,7 +184,7 @@ 1=0 <!-- 空å表æ¶è¿åç©ºç»æ --> </if> </where> ORDER BY sys_user.create_time DESC ORDER BY sys_user.create_time DESC, sys_user.user_id DESC </select> <select id="selectUsersByIds" resultType="com.ruoyi.project.system.domain.SysUser"> SELECT user_id, nick_name @@ -194,7 +194,7 @@ #{id} </foreach> and del_flag = '0' ORDER BY sys_user.create_time DESC ORDER BY sys_user.create_time DESC, sys_user.user_id DESC </select> <select id="selectUserByNickName" resultType="com.ruoyi.project.system.domain.SysUser" parameterType="java.lang.String"> @@ -266,6 +266,9 @@ <update id="resetUserPwd" parameterType="com.ruoyi.project.system.domain.SysUser"> update sys_user set password = #{password} where user_name = #{userName} </update> <update id="resetAllUserPwd"> update sys_user set password = #{password} where del_flag = '0' </update> <delete id="deleteUserById" parameterType="Long"> update sys_user set del_flag = '2' where user_id = #{userId} @@ -288,7 +291,7 @@ and sr.status = '0' and su.status = '0' and su.del_flag = '0' ORDER BY su.create_time DESC ORDER BY su.create_time DESC, su.user_id DESC </select> <select id="getUserByPerms" resultType="java.lang.Long"> select distinct t5.user_id