恒合仓库 - 采购单管理模块

采购单管理模块

文章目录

  • 采购单管理模块
  • 一、添加采购单(核心)
    • 1.1 采购流程
    • 1.2 采购单实体类
    • 1.3 添加采购单
      • 1.3.1 Mapper
      • 1.3.2 Service
      • 1.3.3 Controller
      • 1.3.4 效果图
  • 二、采购单管理模块
    • 2.1 仓库数据回显
      • 2.1.1 Mapper
      • 2.1.2 Service
      • 2.1.3 Controller
      • 2.1.4 效果图
    • 2.2 采购单列表
      • 2.1.1 Mapper
      • 2.1.2 Service
      • 2.1.3 Controller
      • 2.1.4 效果图
    • 2.3 删除采购单
      • 2.3.1 Mapper
      • 2.3.2 Service
      • 2.3.3 Controller
    • 2.4 修改采购单
      • 2.4.1 Mapper
      • 2.4.2 Service
      • 2.4.3 Controller
    • 2.5 生成入库单
      • 2.5.1 入库单表实体类
      • 2.5.2 Mapper
      • 2.5.3 Service
      • 2.5.4 Controller
      • 2.5.5 效果图
  • 三、入库单管理
    • 3.1 分页查询入库单
      • 3.1.1 Mapper
      • 3.1.2 Service
      • 3.1.3 Controller
      • 3.1.4 效果图
    • 3.2 确认入库单
      • 3.1.1 Mapper
      • 3.1.2 Service
      • 3.1.3 Controller
  • 四、出库单管理
    • 4.1 确认出库单
      • 4.1.1 Mapper
      • 4.1.2 Service
      • 4.1.3 Controller

一、添加采购单(核心)

1.1 采购流程

类似进货

采购流程

  • 在商品列表针对具体的商品添加采购单

    image-20230819193051386

    向buy_list表中添加一条记录。添加的采购单表示预买的商品(还没有买,is_in字段的值是0)

    image-20230819185218636

  • 当商品采购到之后进行入库

    在采购单列表做入库操作,向in_store表添加记录(状态是0未入库),同时修改采购单表buy_list表由0改为1入库(这个入库是表示准备入库)

image-20230819191554350

​ 下面是in_store表

image-20230819191805399

  • 商品真正的入库

    在入库单列表做确认入库操作

    image-20230819191905348

    将入库单表in_store表的入库单状态由0改为1入库

1.2 采购单实体类

/*** 采购单表buy_list表的实体类:*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Purchase {private Integer buyId;//采购单idprivate Integer productId;//采购单采购的商品idprivate Integer storeId;//采购单采购的商品所在仓库idprivate Integer buyNum;//预计采购的商品数量private Integer factBuyNum;//实际采购的商品数量@JsonFormat(pattern = "yyyy-MM-dd")private Date buyTime;//采购时间private Integer supplyId;//采购单采购的商品的供应商idprivate Integer placeId;//采购单采购的商品的产地idprivate String buyUser;//采购人private String phone;//采购人联系电话private String isIn;//是否生成入库单,1.是,0.否//---------------追加属性---------------------------private String productName;//商品名称private String storeName;//仓库名称private String startTime;//搜索起始时间private String endTime;//搜索结束时间
}

1.3 添加采购单

image-20230819193441082

采购单数据库表buy_list如下所示

image-20230819193636735

image-20230819194050277

1.3.1 Mapper

@Mapper
public interface PurchaseMapper {
//   添加采购单public int insertPurchase(Purchase purchase);}
<insert id="insertPurchase">insert into buy_listvalues (null, #{productId}, #{storeId}, #{buyNum}, null, now(),#{supplyId}, #{placeId}, #{buyUser}, #{phone}, 0)
</insert>

1.3.2 Service

@Service
public class PurchaseServiceImpl implements PurchaseService {@Autowiredprivate PurchaseMapper purchaseMapper;@Overridepublic Result savePurchase(Purchase purchase) {
//      初始化时,实际采购数量要和预计采购数量一致purchase.setFactBuyNum(purchase.getBuyNum());int success = purchaseMapper.insertPurchase(purchase);return success>0 ? Result.ok("添加采购单成功") : Result.err(501,"添加采购单失败");}}

1.3.3 Controller

@RestController
@RequestMapping("/purchase")
public class PurchaseController {@Autowiredprivate PurchaseService purchaseService;@RequestMapping("/purchase-add")public Result addPurchase(@RequestBody Purchase purchase){return purchaseService.savePurchase(purchase);}}

1.3.4 效果图

image-20230819201233500

image-20230819201346600

二、采购单管理模块

1.采购列表

2.删除采购单

3.修改采购单

4.生成入库单

image-20230822192440479

2.1 仓库数据回显

2.1.1 Mapper

//  查询所有仓库的方法public List<Store> findAllStore();
<mapper namespace="com.pn.mapper.StoreMapper"><select id="findAllStore" resultType="com.pn.entity.Store">select *from store</select></mapper>

2.1.2 Service

@CacheConfig(cacheNames = "com.pn.service.impl.StoreServiceImpl")
@Service
public class StoreServiceImpl implements StoreService {@Autowiredprivate StoreMapper storeMapper;@Cacheable(key = "'all:store'")@Overridepublic List<Store> queryAllStore() {return storeMapper.findAllStore();}
}

2.1.3 Controller

//  仓库数据回显 - 查询所有仓库@RequestMapping("/store-list")public Result storeList(){return Result.ok(storeService.queryAllStore());}

2.1.4 效果图

image-20230822193510247

2.2 采购单列表

我们需要将下面的数据显示出来。

查询所有采购单并分页或者是根据仓库id、起止时间、商品名称、采购员、是否入库查询采购单并分页

image-20230822213529276

2.1.1 Mapper

//  查询采购单行数的方法public Integer findPurchaseCount(Purchase purchase);//  分页查询采购单的方法public List<Purchase> findPurchasePage(@Param("page") Page page,@Param("purchase") Purchase purchase);
<select id="findPurchaseCount" resultType="java.lang.Integer">select count(*) from buy_list t1, product t2, store t3where t1.product_id = t2.product_id and t1.store_id = t3.store_id<if test="storeId != null">and t1.store_id = #{storeId}</if><if test="productName != null and productName != ''">and t2.product_name like concat('%', #{productName}, '%')</if><if test="buyUser != null and buyUser != ''">and t1.buy_user like concat('%', #{buyUser}, '%')</if><if test="isIn != null and isIn != ''">and t1.is_in = #{isIn}</if><if test="startTime != null and startTime != ''">and t1.buy_time &gt;= #{startTime}</if><if test="endTime != null and endTime != ''">and t1.buy_time &lt;= #{endTime}</if>
</select><select id="findPurchasePage" resultType="com.pn.entity.Purchase">select t1.*, t2.product_name, t3.store_namefrom buy_list t1, product t2, store t3where t1.product_id = t2.product_id and t1.store_id = t3.store_id<if test="purchase.storeId != null">and t1.store_id = #{purchase.storeId}</if><if test="purchase.productName != null and purchase.productName != ''">and t2.product_name like concat('%', #{purchase.productName}, '%')</if><if test="purchase.buyUser != null and purchase.buyUser != ''">and t1.buy_user like concat('%', #{purchase.buyUser}, '%')</if><if test="purchase.isIn != null and purchase.isIn != ''">and t1.is_in = #{purchase.isIn}</if><if test="purchase.startTime != null and purchase.startTime != ''">and t1.buy_time &gt;= #{purchase.startTime}</if><if test="purchase.endTime != null and purchase.endTime != ''">and t1.buy_time &lt;= #{purchase.endTime}</if>order by t1.buy_time desclimit #{page.limitIndex}, #{page.pageSize}
</select>

2.1.2 Service

    @Overridepublic Page queryPurchasePage(Page page, Purchase purchase) {//      查询采购单行数Integer count = purchaseMapper.findPurchaseCount(purchase);//      分页查询采购单List<Purchase> purchasePage = purchaseMapper.findPurchasePage(page, purchase);//      组装分页信息page.setTotalNum(count);page.setResultList(purchasePage);return page;}

2.1.3 Controller

//分页查询采购单的url
@RequestMapping("/purchase-page-list")
public Result purchaseListPage(Page page, Purchase purchase) {return Result.ok(purchaseService.queryPurchasePage(page,purchase));
}

2.1.4 效果图

image-20230822224905377

2.3 删除采购单

已经入库的采购单不能被删除

2.3.1 Mapper

//  根据id删除采购单的方法public int removerPurchaseById(@Param("buyId") Integer buyId);
<delete id="removerPurchaseById">delete from buy_list where buy_id =#{buyId}
</delete>

2.3.2 Service

    @Overridepublic Result deletePurchaseById(Integer buyId) {int success = purchaseMapper.removerPurchaseById(buyId);return success>0 ? Result.ok("删除采购单成功") : Result.err(501,"删除采购单失败");}

2.3.3 Controller

//  删除采购单@RequestMapping("/purchase-delete/{buyId}")public Result deletePurchase(@PathVariable Integer buyId){return Result.ok(purchaseService.deletePurchaseById(buyId));}

2.4 修改采购单

只能修改采购单的“预计采购数量”和“实际采购数量”

image-20230829211605364

2.4.1 Mapper

//  根据id修改预计采购数量和实际采购数量的方法public int setNumberById(Purchase purchase);
<update id="setNumberById">update buy_listset buy_num = #{buyNum} ,fact_buy_num = #{factBuyNum}where buy_id = #{buyId}
</update>

2.4.2 Service

@Override
public Result updatePurchaseById(Purchase purchase) {int success = purchaseMapper.setNumberById(purchase);return success>0 ? Result.ok("删除采购单成功") : Result.err(501,"删除采购单失败");
}

2.4.3 Controller

//  修改采购单的业务方法@RequestMapping("/purchase-update")public Result updatePurchase(@RequestBody Purchase purchase){return Result.ok(purchaseService.updatePurchaseById(purchase));}

2.5 生成入库单

image-20230829220825978

当我们商品采购到后,我们要进行入库操作

image-20230829220013380

2.5.1 入库单表实体类

/*** 入库单表in_store表的实体类:*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class InStore {private Integer insId;//入库单idprivate Integer storeId;//仓库idprivate Integer productId;//商品idprivate Integer inNum;//入库数量private Integer createBy;//创建入库单的用户id@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")private Date createTime;//创建时间private Integer isIn;//是否入库,1.是,0.否//-----------------追加的属性--------------------private String productName;//商品名称private String startTime;//起始时间private String endTime;//结束时间private String storeName;//仓库名称private String userCode;//创建入库单的用户的名称private BigDecimal inPrice;//商品入库价格
}

2.5.2 Mapper

//  根据id修改采购单状态为已入库 (采购表buy_list)public int setIsInById(Integer buyId);
<update id="setIsInById">update buy_listset is_in =1where buy_id = #{buyId}
</update>
//添加入库单的方法
public int insertInStore(InStore inStore);

2.5.3 Service

@Service
public class InStoreServiceImpl implements InStoreService {//注入InStoreMapper@Autowiredprivate InStoreMapper inStoreMapper;//注入PurchaseMapper@Autowiredprivate PurchaseMapper purchaseMapper;//    //添加入库单的业务方法@Transactional//事务处理@Overridepublic Result saveInStore(InStore inStore, Integer buyId) {//添加入库单int i = inStoreMapper.insertInStore(inStore);if(i>0){//根据id将采购单状态改为已入库int j = purchaseMapper.setIsInById(buyId);if(j>0){return Result.ok("入库单添加成功!");}return Result.err(Result.CODE_ERR_BUSINESS, "入库单添加失败!");}return Result.err(Result.CODE_ERR_BUSINESS, "入库单添加失败!");}}

2.5.4 Controller

//  生成入库单的url接口
@RequestMapping("/in-warehouse-record-add")
public Result addInStore(@RequestBody Purchase purchase, @RequestHeader("Token") String token) {//获取当前登录的用户CurrentUser currentUser = tokenUtils.getCurrentUser(token);//获取当前登录的用户id 创建入库单的用户idint createBy = currentUser.getUserId();//创建InStore对象封装添加的入库单的信息InStore inStore = new InStore();inStore.setStoreId(purchase.getStoreId());inStore.setProductId(purchase.getProductId());inStore.setInNum(purchase.getFactBuyNum());inStore.setCreateBy(createBy);return inStoreService.saveInStore(inStore,purchase.getBuyId());
}

2.5.5 效果图

image-20230829224201287

三、入库单管理

image-20230924102744290

3.1 分页查询入库单

我们要完成的就是下面这个功能

3.1.1 Mapper

//  分页查询的方法
//  查询入库单行数的方法public Integer findInStoreCount(@Param("inStore")InStore inStore);//  分页查询入库单的方法public List<InStore> findInStorePage(@Param("page") Page page,@Param("inStore") InStore inStore);

具体实现

<!--查询入库单行数的方法-->
<select id="findInStoreCount" resultType="java.lang.Integer">select count(*)from in_store t1,product t2where t1.product_id = t2.product_id<if test="inStore.storeId !=null">and t1.store_id = #{inStore.storeId}</if><if test="inStore.productName !=null and inStore.productName !='' ">and t2.product_name like concat('%',#{inStore.productName},'%')</if><if test="inStore.startTime !=null and inStore.startTime!='' ">and t1.create_time &gt; = #{inStore.startTime}</if><if test="inStore.endTime !=null and inStore.endTime!='' ">and t1.create_time &lt; = #{inStore.endTime}</if>
</select>
<!--分页查询入库单的方法-->
<select id="findInStorePage" resultType="com.pn.entity.InStore">select t1.*,t2.product_name,t2.in_price,t3.store_name,t4.user_codefrom in_store t1,product t2,store t3,user_info t4where t1.product_id = t2.product_idand t1.store_id = t3.store_idand t1.create_by = t4.user_id<if test="inStore.storeId !=null">and t1.store_id = #{inStore.storeId}</if><if test="inStore.productName !=null and inStore.productName !='' ">and t2.product_name like concat('%',#{inStore.productName},'%')</if><if test="inStore.startTime !=null and inStore.startTime!='' ">and t1.create_time &gt; = #{inStore.startTime}</if><if test="inStore.endTime !=null and inStore.endTime!='' ">and t1.create_time &lt; = #{inStore.endTime}</if>order by t1.create_time desclimit #{page.limitIndex},#{page.pageSize}
</select>

3.1.2 Service

    @Overridepublic Page queryInStore(Page page, InStore inStore) {
//      查询入库单行数Integer count = inStoreMapper.findInStoreCount(inStore);//      分页查询入库单List<InStore> inStorePageList = inStoreMapper.findInStorePage(page, inStore);page.setResultList(inStorePageList);page.setTotalNum(count);return page;}

3.1.3 Controller

@RequestMapping("/instore-page-list")
public Result inStoreListPage(Page page, InStore inStore) {return Result.ok(inStoreService.queryInStore(page, inStore));
}

3.1.4 效果图

image-20230924113641134

3.2 确认入库单

image-20230924200345175

image-20230924201341330

入库流程

  • 将入库单状态改为已入库
  • 增加商品的库存

3.1.1 Mapper

将入库单的状态修改为已入库

//  根据id修改入库单状态为已入库的方法public int  setIsInById(@Param("isStoreId") Integer isStoreId);
<update id="setIsInById">update in_store set is_in = 1 where  ins_id = #{isStoreId}
</update>

修改product表中的库存数量

//  根据id修改商品库存的方法public int setInventById(@Param("productId")Integer productId,@Param("invent")Integer invent);
<!--根据id修改商品库存的方法-->
<update id="setInventById">update product set product_invent = product_invent+#{invent} where product_id = #{productId}
</update>

3.1.2 Service

    @Override@Transactionalpublic Result inStoreConfirm(InStore inStore) {
//      修改入库单状态int success = inStoreMapper.setIsInById(inStore.getInsId());if (success>0){
//          修改商品库存
//          商品入库数量增加int successCount = productMapper.setInventById(inStore.getProductId(), inStore.getInNum());if (successCount>0){return Result.ok("入库单确认成功!");}}return Result.err(Result.CODE_ERR_BUSINESS,"入库单确认失败!");}

3.1.3 Controller

//  确认入库的url
@RequestMapping("/instore-confirm")
public Result confirmInStore(@RequestBody InStore inStore) {return inStoreService.inStoreConfirm(inStore);
}

四、出库单管理

image-20230924212444875

4.1 确认出库单

  • 将出库单状态修改为1,表示已出库
  • 修改商品的库存 – 减库存

4.1.1 Mapper

修改出库单状态

//   根据id修改出库单状态为已出库的方法public int setIsOutById(@Param("outStoreId") Integer outStoreId);
<update id="setIsOutById">update out_storeset is_out =1where outs_id = #{outStoreId}
</update>

根据商品id查询商品库存的方法

//  根据商品id查询商品库存的方法public int findInventById(@Param("productId")Integer productId);
<select id="findInventById" resultType="java.lang.Integer">select product_invent from product where product_id  =#{productId}
</select>

修改商品库存数量

依然是3.2.1中的Mapper

4.1.2 Service

    @Override@Transactionalpublic Result outStoreConfirm(OutStore outStore) {
//      判断商品库存是否充足int productInvent = productMapper.findInventById(outStore.getProductId());if (productInvent < outStore.getOutNum()) {return  Result.err(Result.CODE_ERR_BUSINESS,"商品库存不足!");}
//      修改出库单状态outStoreMapper.setIsOutById(outStore.getStoreId());
//      修改商品库存productMapper.setInventById(outStore.getProductId(),-outStore.getOutNum());return Result.ok("确认出库成功");}

4.1.3 Controller

//  确认出库单url接口
@RequestMapping("/outstore-confirm")
public Result confirmOutStore(@RequestBody OutStore outStore) {return outStoreService.outStoreConfirm(outStore);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity的HDRP渲染管线搭建配置VR交互场景_SteamVR 插件和Pico串流助手】

HDRP渲染管线配置VR交互场景 Unity创建场景和相关配置下载导入项目打开PICO串流助手在Pico中的配置:用Steam串流VR_这篇的前置补充 Unity创建场景和相关配置 带HDRP Sample Scene 示例的 下载 SteamVR Unity插件地址02 导入项目

怒刷LeetCode的第10天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;两次拓扑排序 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;分治法 方法二&#xff1a;优先队列&#xff08;Priority Queue&#xff09; 方法三&#xff1a;迭代 第三题 题目来源 题目内容…

【Vue】ElementUI实现登录注册

目录 一.跨域的概述 1.1.概述 1.2.特点 二.ElementUI 2.1. 导入 2.2.搭建 2.3.页面 三.数据交互 3.1.安装相关模块 3.1.1安装模块 3.1.2查看模块 3.1.3.引用模块 3.2. axios的get请求 3.3. axios的post请求 四.注册功能 好啦今天到这了&#xff0c;希望能帮到你&…

Matplotlib 是一个广泛用于 Python 数据可视化的库

Matplotlib 是一个广泛用于 Python 数据可视化的库&#xff0c;它提供了丰富的绘图功能&#xff0c;允许用户创建各种类型的图表&#xff0c;从简单的折线图到复杂的三维图表&#xff0c;以及定制图形的各个方面。以下是Matplotlib的一些重要特点和常见用法&#xff1a; Matpl…

向量数据库库Milvus Cloud2.3 技术选型中性能、成本、扩展性是重点

技术选型中性能、成本、扩展性是重点 对于向量数据库来说,用户最关心的莫过于性能、成本和扩展性。 Milvus 2.x 从 Day 1 开始就将扩展性作为设计的第一优先级,在众多用户环境中落地了十亿至百亿级别场景。不止如此,对于 Milvus 来说,扩展性不仅仅意味着支持百亿级别向量,…

网站整站优化-网站整站优化工具

您是否曾为您的网站在搜索引擎中的排名而感到焦虑&#xff1f;是否苦苦思考如何提高流量、吸引更多用户&#xff1f; 什么是整站优化。简而言之&#xff0c;它是一项用于提升网站在搜索引擎中排名的策略和技巧。通过对网站的内容、结构、速度等方面进行优化&#xff0c;可以使…

wordpress使用category order and taxonomy terms order插件实现分类目录的拖拽排序

文章目录 引入实现效果安装插件使用插件 引入 使用docker快速搭建wordpress服务&#xff0c;并指定域名访问 上一节我们使用docker快速搭建了wordpress服务&#xff0c;可以看到基础的wordpress服务已经集成基础的用户管理、文章发布、页面编辑、文章分类等功能&#xff0c;但…

当下IT测试技术员的求职困境

从去年被裁到现在&#xff0c;自由职业的我已经有一年没有按部就班打卡上班了。期间也面试了一些岗位&#xff0c;有首轮就挂的&#xff0c;也有顺利到谈薪阶段最后拿了offer的&#xff0c;不过最后选择了拒绝。 基于自己近一年的面试求职经历&#xff0c;我想聊聊当下大家在求…

时序数据库 IoTDB 发布端边云原生解决方案,有效优化工业互联网数据上传时效与资源消耗...

2023 年 9 月 8 日&#xff0c;由中国通信学会、福建省工业和信息化厅主办的 2023 中国国际工业互联网创新发展大会在厦门举办。大会主论坛中&#xff0c;时序数据库 IoTDB 发表其自研建立的端边云原生解决方案&#xff0c;该方案可实现端侧设备、边缘服务器、数据中心数据的协…

安卓备份基带分区 备份字库 步骤解析 以免误檫除分区或者“格机” 后悔莫及

玩机搞机---安卓机型mtk和高通芯片查看分区 导出分区 备份分区的一些工具分析 修复基带 改串码 基带qcn 改相关参数 格机危害 手机基带的重要性前面几期博文我都有相关的说明。他区别于别的分区。而且目前手机的安全性越来越高。基带分区基本都是专机专用。而不像早期机型一…

代码随想录Day02 数组基础2 leetcode T977有序数组的平方, T209 长度最小的子数组,T59 螺旋矩阵II

本文思路和详细解答来源于: 代码随想录 视频讲解见: 双指针法经典题目 | LeetCode&#xff1a;977.有序数组的平方_哔哩哔哩_bilibili Leetcode T977 有序数组的平方 题目链接: 977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 思路1: 暴力求解 这里先解释一下非…

图像相关名词概述

颜色模式 通过赋予C的不同维度不同的含义&#xff0c;可以用来描述不同的颜色空间。颜色模式&#xff0c;是将某种颜色表现为数字形式的模型&#xff0c;或者说是一种记录图像颜色的方式。本单元主要讲述两个常用的颜色模式&#xff1a;RGB&#xff0c;HSV。 RGB模式是工业界的…

为什么atomic不是线程安全的

原理 1、读取i的值存入寄存器&#xff1b; 2、将i加1&#xff1b; 3、修改i的值&#xff1b; 修改一个属性包含了读&#xff0c;执行 改变&#xff0c;写入&#xff0c;atomic 只为读和写加了锁&#xff0c;保证了同一个时间只有一个线程在读和写&#xff0c;但是&#xff0c;会…

开关电源-交流220V降压电路-电阻电容降压原理

阻容降压原理 电容电阻降压的原理其实比较简单。它的工作原理是电容在交流信号的情况下&#xff0c;产生容抗来限制最大的工作电流。说白了就是电容使用它自己的通交流阻直流的性能&#xff0c;在交流信号输入时电容产生容抗。我们通过他的这个特性&#xff0c;可以设计出&…

2614. 对角线上的质数-c语言解法

给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数&#xff0c;返回 0 。 注意&#xff1a; 如果某个整数大于 1 &#xff0c;且不存在除 1 和自身之外的正整数因子&#xff0c;则认为该整数是一个…

【Windows】 Windows 10 等系统如何关闭文件夹预览模式

在Windows系统进行文件操作时&#xff0c;由于屏幕尺寸有限&#xff0c;有时感觉文件夹右侧的预览模式很占位置&#xff0c;因此想预览时打开&#xff0c;想关闭时就关闭。 以下是两种解决方案&#xff1a; 方案一&#xff1a;彻底关闭预览模式 方案二&#xff1a;可通过快捷键…

“源启2.0”:从自上而下的解构,到自下而上的重构

从垂直打穿、到应用重构&#xff0c;中电金信赋能行业数字化转型之路既“向下走”、也“向上看”。“向上”先理解和吃透客户的企业战略&#xff0c;进而自上而下地将企业战略拆解为业务架构&#xff0c;“向下”再将业务架构拆解为应用架构和数据架构&#xff0c;并进一步对齐…

18795-2012 茶叶标准样品制备技术条件

声明 本文是学习GB-T 18795-2012 茶叶标准样品制备技术条件. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了各类茶叶(除再加工茶)标准样品的制备、包装、标签、标识、证书和有效期。 本标准适用于各类茶叶(除再加工茶)感官品质…

Centos7部署gitlab

建议服务器配置不低于2C8G 1、安装必要的依赖 sudo yum install -y curl policycoreutils-python openssh-server perl2、配置极狐GitLab 软件源镜像 curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash sudo yum install gitlab-jh -y3、…

DAZ To UMA⭐三.导入Blender的配置, 及Blender快捷键

文章目录 🟥 Blender快捷键1️⃣ 3D视图快捷键2️⃣ 视角快捷键3️⃣ 编辑快捷键4️⃣ 对物体的操作🟧 Blender导入FBX的配置🟩 设置脸部骨骼大小1️⃣ 切换视角2️⃣ 缩小脸部骨骼3️⃣ 本节效果预览🟦 设置眼角膜透明度🟥 Blender快捷键 1️⃣ 3D视图快捷键 快捷键…