Merge remote-tracking branch 'refs/remotes/origin/jtwy' into sqd-hb
# Conflicts:
# src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
# src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
# src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
# src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
# src/main/java/com/ruoyi/home/controller/HomeController.java
# src/main/java/com/ruoyi/home/service/HomeService.java
# src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
# src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
# src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
# src/main/java/com/ruoyi/procurementrecord/dto/Details.java
# src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
# src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
# src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
# src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
# src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
# src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
# src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
# src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
# src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
# src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
# src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
# src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
# src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
# src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
# src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
# src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
# src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
# src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
# src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
# src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
# src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
# src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
# src/main/resources/application-dev.yml
# src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
# src/main/resources/mapper/procurementrecord/CustomStorageMapper.xml
# src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
# src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | alter table product_work_order |
| | | add product_order_id bigint not null default 0 comment 'ç产订åid'; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | alter table product_model |
| | | add product_code varchar(255) null comment '产åç¼ç '; |
| | | |
| | | alter table process_route |
| | | add process_route_code varchar(255) null comment 'å·¥èºè·¯çº¿ç¼ç '; |
| | | |
| | | alter table procurement_record_storage |
| | | add product_model_id bigint null comment '产åè§æ ¼id'; |
| | | alter table procurement_record_out |
| | | add product_model_id bigint null comment '产åè§æ ¼id'; |
| | | |
| | | |
| | | alter table quality_inspect |
| | | add product_model_id bigint null comment '产åè§æ ¼id'; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # å·¥èºè·¯çº¿ |
| | | drop table if exists process_route; |
| | | create table process_route |
| | | ( |
| | | id bigint auto_increment primary key, |
| | | product_model_id bigint not null default 0 comment '产åid', |
| | | description varchar(255) not null default '' comment 'æè¿°', |
| | | tenant_id bigint not null comment 'ç§æ·id', |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | update_time datetime null comment 'æ´æ°æ¶é´' |
| | | ); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # å·¥èºè·¯çº¿é¡¹ç® |
| | | drop table if exists process_route_item; |
| | | create table process_route_item |
| | | ( |
| | | id bigint auto_increment primary key, |
| | | route_id bigint not null default 0 comment 'å·¥èºè·¯çº¿id', |
| | | product_model_id bigint not null default 0 comment '产åid', |
| | | process_id bigint not null default 0 comment 'å·¥åºid', |
| | | tenant_id bigint not null comment 'ç§æ·id', |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | update_time datetime null comment 'æ´æ°æ¶é´' |
| | | ); |
| | | |
| | | # ç产工èºè·¯çº¿é¡¹ç® |
| | | drop table if exists product_process_route_item; |
| | | create table product_process_route_item |
| | | ( |
| | | id bigint auto_increment primary key, |
| | | route_id bigint not null default 0 comment 'å·¥èºè·¯çº¿id', |
| | | product_model_id bigint not null default 0 comment 'éå®å°è´¦äº§åid', |
| | | process_id bigint not null default 0 comment 'å·¥åºid', |
| | | tenant_id bigint not null comment 'ç§æ·id', |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | update_time datetime null comment 'æ´æ°æ¶é´' |
| | | ); |
| | | |
| | | # ç产订å |
| | | drop table if exists product_order; |
| | | create table product_order |
| | | ( |
| | | id bigint auto_increment primary key, |
| | | sales_ledger_id bigint not null default 0 comment 'éå®å°è´¦id', |
| | | product_model_id bigint not null default 0 comment 'éå®å°è´¦äº§åid', |
| | | route_id bigint not null default 0 comment 'å·¥èºè·¯çº¿id', |
| | | nps_no varchar(255) not null default '' comment 'ç产订åå·', |
| | | status int not null default 0 comment 'ç¶æ 0 å¾
确认 1 已确认', |
| | | tenant_id bigint not null comment 'ç§æ·id', |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | update_time datetime null comment 'æ´æ°æ¶é´' |
| | | ); |
| | | alter table quality_inspect |
| | | add purchase_ledger_id int null comment 'éè´è®¢åid'; |
| | | |
| | | # ç产工å |
| | | drop table if exists product_work_order; |
| | | create table product_work_order |
| | | ( |
| | | id bigint auto_increment primary key, |
| | | product_process_route_item_id bigint not null default 0 comment 'å·¥èºè·¯çº¿é¡¹ç®id', |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | update_time datetime null comment 'æ´æ°æ¶é´', |
| | | work_order_no varchar(255) not null default '' comment 'å·¥åç¼å·', |
| | | plan_start_time datetime null comment '计åå¼å§æ¶é´', |
| | | plan_end_time datetime null comment '计åç»ææ¶é´', |
| | | actual_start_time datetime null comment 'å®é
å¼å§æ¶é´', |
| | | actual_end_time datetime null comment 'å®é
ç»ææ¶é´', |
| | | status int not null default 0 comment 'ç¶æ 1 å¾
确认 2 å¾
ç产 3çäº§ä¸ 4å·²ç产 ', |
| | | tenant_id bigint not null comment 'ç§æ·id' |
| | | ); |
| | | |
| | | alter table product_process |
| | | add salary_quota numeric(16,3) null comment 'å·¥èµå®é¢'; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # å·¥åº |
| | | drop table if exists product_process; |
| | | create table product_process |
| | | ( |
| | | id bigint auto_increment |
| | | primary key, |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | update_time datetime null comment 'æ´æ°æ¶é´', |
| | | name varchar(255) not null default '' comment 'å·¥èºåç§°', |
| | | no varchar(255) not null default '' comment 'å·¥èºç¼å·', |
| | | remark varchar(255) not null default '' comment '夿³¨', |
| | | tenant_id bigint not null default 0 comment 'ç§æ·id' |
| | | ); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 产åç»æ |
| | | drop table if exists product_structure; |
| | | create table product_structure |
| | | ( |
| | | id bigint auto_increment |
| | | primary key, |
| | | product_model_id bigint not null comment '产åid', |
| | | process_id bigint not null comment 'å·¥åºid', |
| | | unit_quantity numeric(16, 4) not null comment 'åä½äº§åºéè¦æ°é', |
| | | demanded_quantity numeric(16, 4) not null comment 'éæ±æ°é', |
| | | unit varchar(255) not null comment 'åä½', |
| | | disk_quantity numeric(16, 4) not null comment 'çæ°é', |
| | | tenant_id bigint not null comment 'ç§æ·id' |
| | | ); |
| | | alter table product_structure |
| | | add parent_id bigint null comment 'ç¶id'; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | drop table if exists production_product_main; |
| | | create table production_product_main |
| | | ( |
| | | id bigint auto_increment |
| | | primary key, |
| | | product_no varchar(255) not null comment 'æ¥å·¥åå·', |
| | | user_id bigint not null comment 'æ¥å·¥ç¨æ·id', |
| | | work_order_id bigint not null comment 'å·¥åid', |
| | | status int not null comment 'ç¶æ 0 å¾
æ¥å·¥ 1 å¾
确认', |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | tenant_id bigint not null comment 'ç§æ·id' |
| | | ); |
| | | |
| | | drop table if exists production_product_output; |
| | | create table production_product_output |
| | | ( |
| | | id bigint auto_increment |
| | | primary key, |
| | | product_main_id bigint not null comment 'æ¥å·¥åid', |
| | | product_model_id bigint not null comment '产åid', |
| | | quantity numeric(16, 4) not null comment 'æ°é', |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | tenant_id bigint not null comment 'ç§æ·id' |
| | | ); |
| | | |
| | | drop table if exists production_product_input; |
| | | create table production_product_input |
| | | ( |
| | | id bigint auto_increment |
| | | primary key, |
| | | product_main_id bigint not null comment 'æ¥å·¥åid', |
| | | product_model_id bigint not null comment '产åid', |
| | | quantity numeric(16, 4) not null comment 'æ°é', |
| | | create_time datetime null comment 'å½å
¥æ¶é´', |
| | | tenant_id bigint not null comment 'ç§æ·id' |
| | | ) |
| | |
| | | <scope>runtime</scope>
|
| | | </dependency>
|
| | |
|
| | | <!-- FreeMarker 模æ¿å¼æï¼å¤çåéå ä½ç¬¦ -->
|
| | | <dependency>
|
| | | <groupId>org.freemarker</groupId>
|
| | | <artifactId>freemarker</artifactId>
|
| | | <version>2.3.32</version>
|
| | | </dependency>
|
| | |
|
| | | <!-- pagehelper å页æä»¶ -->
|
| | | <dependency>
|
| | | <groupId>com.github.pagehelper</groupId>
|
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.FieldFill; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.generator.FastAutoGenerator; |
| | | import com.baomidou.mybatisplus.generator.config.*; |
| | | import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; |
| | | import com.baomidou.mybatisplus.generator.config.po.TableField; |
| | | import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; |
| | | import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; |
| | | import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; |
| | | import com.baomidou.mybatisplus.generator.fill.Column; |
| | | |
| | | import java.util.Collections; |
| | | import java.util.Scanner; |
| | | |
| | | // æ¼ç¤ºä¾åï¼æ§è¡ main æ¹æ³æ§å¶å°è¾å
¥æ¨¡å表åå车èªå¨çæå¯¹åºé¡¹ç®ç®å½ä¸ |
| | | public class CodeGenerator { |
| | | |
| | | public static String database_url = "jdbc:mysql://1.15.17.182:9999/product-inventory-management-jtwy"; |
| | | public static String database_username = "root"; |
| | | public static String database_password= "xd@123456.."; |
| | | public static String author = "è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸"; |
| | | public static String model = "production"; // 模å |
| | | public static String setParent = "com.ruoyi."+ model; // å
è·¯å¾ |
| | | public static String tablePrefix = ""; // è®¾ç½®è¿æ»¤è¡¨åç¼ |
| | | public static void main(String[] args) { |
| | | String projectPath = System.getProperty("user.dir"); |
| | | FastAutoGenerator.create(database_url, database_username, database_password) |
| | | // å
¨å±é
ç½® |
| | | .globalConfig(builder -> { |
| | | builder.author(author) // 设置ä½è
|
| | | .commentDate("yyyy-MM-dd hh:mm:ss") //æ³¨éæ¥æ |
| | | .outputDir(projectPath + "/src/main/java") // æå®è¾åºç®å½ |
| | | .disableOpenDir() //ç¦æ¢æå¼è¾åºç®å½ï¼é»è®¤æå¼ |
| | | .enableSwagger() // å¼å¯swagger |
| | | |
| | | ; |
| | | }) |
| | | // æ°æ®æºé
ç½®ï¼æ ¸å¿ï¼èªå®ä¹ç±»å转æ¢ï¼å¼ºå¶tenant_id为Longï¼ |
| | | .dataSourceConfig(builder -> { |
| | | builder.typeConvert(new MySqlTypeConvert() { |
| | | /** |
| | | * èªå®ä¹å段类åè½¬æ¢ |
| | | * @param globalConfig å
¨å±é
ç½® |
| | | * @param tableField è¡¨åæ®µä¿¡æ¯ |
| | | * @return 转æ¢åçåæ®µç±»å |
| | | */ |
| | | @Override |
| | | public DbColumnType processTypeConvert(GlobalConfig globalConfig, TableField tableField) { |
| | | // 强å¶tenant_idåæ®µç±»å为Long |
| | | if ("tenant_id".equalsIgnoreCase(tableField.getName())) { |
| | | return DbColumnType.LONG; |
| | | } |
| | | // å
¶ä»å段使ç¨é»è®¤è½¬æ¢è§å |
| | | return (DbColumnType) super.processTypeConvert(globalConfig, tableField); |
| | | } |
| | | }); |
| | | }) |
| | | // å
é
ç½® |
| | | .packageConfig(builder -> { |
| | | builder.entity("pojo"); |
| | | builder.parent(setParent) // 设置ç¶å
å |
| | | .pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "/src/main/resources/mapper/"+model)); // 设置mapperXmlçæè·¯å¾ |
| | | }) |
| | | // çç¥é
ç½® |
| | | .strategyConfig(builder -> { |
| | | builder.addInclude(scanner("表åï¼å¤ä¸ªç©ºæ ¼åå²").split(" ")) // 设置éè¦çæç表å |
| | | .addTablePrefix(tablePrefix) // è®¾ç½®è¿æ»¤è¡¨åç¼ |
| | | // Entity çç¥é
ç½® |
| | | .entityBuilder() |
| | | .enableLombok() //å¼å¯ Lombok |
| | | .naming(NamingStrategy.underline_to_camel) //æ°æ®åºè¡¨æ å°å°å®ä½çå½åçç¥ï¼ä¸åçº¿è½¬é©¼å³°å½ |
| | | .columnNaming(NamingStrategy.underline_to_camel) //æ°æ®åºè¡¨å段æ å°å°å®ä½çå½åçç¥ï¼ä¸åçº¿è½¬é©¼å³°å½ |
| | | .enableFileOverride() // è¦çå·²ç»çæçEntityæä»¶ |
| | | .logicDeleteColumnName("state") |
| | | .addTableFills( |
| | | new Column("create_time", FieldFill.INSERT), |
| | | new Column("update_time", FieldFill.INSERT_UPDATE), |
| | | new Column("create_user", FieldFill.INSERT), |
| | | new Column("update_user", FieldFill.INSERT_UPDATE), |
| | | new Column("tenant_id", FieldFill.INSERT) |
| | | ) |
| | | .idType(IdType.AUTO) // èªå¢ä¸»é® |
| | | |
| | | // Mapper çç¥é
ç½® |
| | | .mapperBuilder() |
| | | .enableFileOverride() // è¦çå·²çæMapperæä»¶ |
| | | .enableBaseResultMap() // èªå¨çæresultMap |
| | | .mapperAnnotation(org.apache.ibatis.annotations.Mapper.class) |
| | | |
| | | // Service çç¥é
ç½® |
| | | .serviceBuilder() |
| | | .formatServiceFileName("%sService") //æ ¼å¼å service æ¥å£æä»¶åç§°ï¼%sè¿è¡å¹é
表åï¼å¦ UserService |
| | | .formatServiceImplFileName("%sServiceImpl") //æ ¼å¼å service å®ç°ç±»æä»¶åç§°ï¼%sè¿è¡å¹é
表åï¼å¦ UserServiceImpl |
| | | .enableFileOverride() // è¦çå·²çææä»¶ |
| | | |
| | | // Controller çç¥é
ç½® |
| | | .controllerBuilder() |
| | | .enableFileOverride() // è¦çå·²çææä»¶ |
| | | .enableRestStyle() // å¼å¯çæ@RestController æ§å¶å¨ |
| | | ; |
| | | }) |
| | | //5ãæ¨¡æ¿å¼æ |
| | | .templateEngine(new FreemarkerTemplateEngine()) //é»è®¤ |
| | | .execute(); |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * è¯»åæ§å¶å°å
容 |
| | | * </p> |
| | | */ |
| | | public static String scanner(String tip) { |
| | | Scanner scanner = new Scanner(System.in); |
| | | StringBuilder help = new StringBuilder(); |
| | | help.append("请è¾å
¥" + tip + "ï¼"); |
| | | System.out.println(help.toString()); |
| | | if (scanner.hasNext()) { |
| | | String ipt = scanner.next(); |
| | | |
| | | if (StringUtils.isNotBlank(ipt)) { |
| | | return ipt; |
| | | } |
| | | } |
| | | throw new MybatisPlusException("请è¾å
¥æ£ç¡®ç" + tip + "ï¼"); |
| | | } |
| | | } |
| | |
| | | import java.math.BigDecimal; |
| | | import java.time.DayOfWeek; |
| | | import java.time.LocalDate; |
| | | import java.time.ZoneId; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @AllArgsConstructor |
| | | @Service |
| | |
| | | |
| | | @Override |
| | | public Map<String, List<String>> analysis() { |
| | | // è·åæ¬å¨çæ¶é´èå´ |
| | | LocalDate startOfWeek = LocalDate.now().with(DayOfWeek.MONDAY); |
| | | LocalDate endOfWeek = LocalDate.now().with(DayOfWeek.SUNDAY); |
| | | // è·åæè¿å个æï¼å½åæ + å3个æï¼çæ¶é´èå´ |
| | | LocalDate today = LocalDate.now(); |
| | | DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM"); // å¹´ææ ¼å¼åå¨ |
| | | Map<String, List<String>> result = new HashMap<>(); |
| | | List<String> days = new ArrayList<>(); |
| | | List<String> totalIncomeList = new ArrayList<>(); |
| | | List<String> totalExpenseList = new ArrayList<>(); |
| | | List<String> netIncomeList = new ArrayList<>(); |
| | | // æ ¹æ®æ¶é´èå´å¾ªç¯æ¥è¯¢æ¯ä¸å¤©çæ»æ¶å
¥ï¼æ»æ¯åº,åæ¶å
¥ï¼æ»æ¶å
¥-æ»æ¯åºï¼ |
| | | for (LocalDate date = startOfWeek; date.isBefore(endOfWeek) || date.isEqual(endOfWeek); date = date.plusDays(1)) { |
| | | BigDecimal totalIncome = accountIncomeMapper.selectList(Wrappers.<AccountIncome>lambdaQuery() |
| | | .eq(AccountIncome::getInputTime, date.toString())) |
| | | .stream() |
| | | .map(AccountIncome::getIncomeMoney) |
| | | .filter(Objects::nonNull) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal totalExpense = accountExpenseMapper.selectList(Wrappers.<AccountExpense>lambdaQuery() |
| | | .eq(AccountExpense::getInputTime, date.toString())) |
| | | .stream() |
| | | .map(AccountExpense::getExpenseMoney) |
| | | .filter(Objects::nonNull) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | List<String> months = new ArrayList<>(); // åå¨å¹´æï¼å¦ 2025-12ã2025-11ï¼ |
| | | List<String> totalIncomeList = new ArrayList<>(); // æ¯ææ»æ¶å
¥ |
| | | List<String> totalExpenseList = new ArrayList<>(); // æ¯ææ»æ¯åº |
| | | List<String> netIncomeList = new ArrayList<>(); // æ¯æåæ¶å
¥ï¼æ¶å
¥-æ¯åºï¼ |
| | | |
| | | // æ¥éª¤1ï¼è®¡ç®è¿4个æçå¹´æå表ï¼å½åæãå1æãå2æãå3æï¼ |
| | | List<String> targetMonths = new ArrayList<>(); |
| | | for (int i = 0; i < 4; i++) { |
| | | LocalDate currentMonth = today.minusMonths(i); |
| | | String monthStr = currentMonth.format(monthFormatter); |
| | | targetMonths.add(monthStr); |
| | | } |
| | | // å转å表ï¼ç¡®ä¿é¡ºåºä¸ºãå3æ â å½åæãï¼å¯éï¼æéæ±è°æ´é¡ºåºï¼ |
| | | Collections.reverse(targetMonths); |
| | | |
| | | // æ¥éª¤2ï¼ä¸æ¬¡æ§æ¥è¯¢è¿4ä¸ªææææ¶å
¥æ°æ®ï¼æâå¹´æâåç»æ±æ» |
| | | LocalDate fourMonthsAgo = today.minusMonths(3).withDayOfMonth(1); // è¿4个æèµ·å§æ¥ï¼å3æ1å·ï¼ |
| | | LocalDate currentMonthEnd = today.withDayOfMonth(today.lengthOfMonth()); // å½åæç»ææ¥ |
| | | ZoneId zoneId = ZoneId.of("Asia/Shanghai"); |
| | | // æ¥è¯¢è¿4ä¸ªææææ¶å
¥ |
| | | List<AccountIncome> allIncomes = accountIncomeMapper.selectList( |
| | | Wrappers.<AccountIncome>lambdaQuery() |
| | | .ge(AccountIncome::getIncomeDate, fourMonthsAgo.toString()) // 大äºçäºèµ·å§æ¥ |
| | | .le(AccountIncome::getIncomeDate, currentMonthEnd.toString()) // å°äºçäºç»ææ¥ |
| | | ); |
| | | |
| | | // æ¶å
¥æâå¹´æâåç»æ±æ»ï¼keyï¼å¹´æå符串ï¼valueï¼å½ææ»æ¶å
¥ï¼ |
| | | Map<String, BigDecimal> monthlyIncomeMap = allIncomes.stream() |
| | | .filter(income -> income.getIncomeMoney() != null) // è¿æ»¤ç©ºéé¢ |
| | | .collect(Collectors.groupingBy( |
| | | income -> { |
| | | // å°è¾å
¥æ¶é´ï¼å符串ï¼è½¬æ¢ä¸ºLocalDateï¼åæ ¼å¼å为年æ |
| | | LocalDate inputDate = income.getIncomeDate().toInstant().atZone(zoneId).toLocalDate(); |
| | | return inputDate.format(monthFormatter); |
| | | }, |
| | | Collectors.reducing(BigDecimal.ZERO, AccountIncome::getIncomeMoney, BigDecimal::add) |
| | | )); |
| | | |
| | | // æ¥éª¤3ï¼ä¸æ¬¡æ§æ¥è¯¢è¿4ä¸ªææææ¯åºæ°æ®ï¼æâå¹´æâåç»æ±æ» |
| | | List<AccountExpense> allExpenses = accountExpenseMapper.selectList( |
| | | Wrappers.<AccountExpense>lambdaQuery() |
| | | .ge(AccountExpense::getExpenseDate, fourMonthsAgo.toString()) |
| | | .le(AccountExpense::getExpenseDate, currentMonthEnd.toString()) |
| | | ); |
| | | |
| | | // æ¯åºæâå¹´æâåç»æ±æ» |
| | | Map<String, BigDecimal> monthlyExpenseMap = allExpenses.stream() |
| | | .filter(expense -> expense.getExpenseMoney() != null) // è¿æ»¤ç©ºéé¢ |
| | | .collect(Collectors.groupingBy( |
| | | expense -> { |
| | | LocalDate inputDate = expense.getExpenseDate().toInstant().atZone(zoneId).toLocalDate(); |
| | | return inputDate.format(monthFormatter); |
| | | }, |
| | | Collectors.reducing(BigDecimal.ZERO, AccountExpense::getExpenseMoney, BigDecimal::add) |
| | | )); |
| | | |
| | | // æ¥éª¤4ï¼å¾ªç¯4ä¸ªç®æ æä»½ï¼å¡«å
ç»è®¡æ°æ®ï¼æ æ°æ®æ¶é»è®¤ä¸º0ï¼ |
| | | for (String month : targetMonths) { |
| | | // å½ææ»æ¶å
¥ï¼æ æ°æ®å为0ï¼ |
| | | BigDecimal totalIncome = monthlyIncomeMap.getOrDefault(month, BigDecimal.ZERO); |
| | | // å½ææ»æ¯åºï¼æ æ°æ®å为0ï¼ |
| | | BigDecimal totalExpense = monthlyExpenseMap.getOrDefault(month, BigDecimal.ZERO); |
| | | // 彿忶å
¥ï¼æ¶å
¥ - æ¯åºï¼ |
| | | BigDecimal netIncome = totalIncome.subtract(totalExpense); |
| | | days.add(date.toString()); |
| | | |
| | | // å¡«å
å表 |
| | | months.add(month); |
| | | totalIncomeList.add(totalIncome.toString()); |
| | | totalExpenseList.add(totalExpense.toString()); |
| | | netIncomeList.add(netIncome.toString()); |
| | | } |
| | | result.put("days", days); // 天 |
| | | result.put("totalIncome", totalIncomeList); // æ¶å
¥ |
| | | result.put("totalExpense", totalExpenseList); // æ¯åº |
| | | result.put("netIncome", netIncomeList); // åæ¶å
¥ |
| | | |
| | | // ç»è£
ç»æ |
| | | result.put("days", months); // å¹´æï¼å¦ ["2025-09", "2025-10", "2025-11", "2025-12"]ï¼ |
| | | result.put("totalIncome", totalIncomeList); // å¯¹åºæä»½æ»æ¶å
¥ |
| | | result.put("totalExpense", totalExpenseList); // å¯¹åºæä»½æ»æ¯åº |
| | | result.put("netIncome", netIncomeList); // å¯¹åºæä»½åæ¶å
¥ |
| | | |
| | | return result; |
| | | } |
| | |
| | | package com.ruoyi.approve.pojo; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | /** |
| | | * å®¡æ¹æµç¨è¡¨ |
| | |
| | | @ApiModelProperty(value = "审æ¹å¤æ³¨") |
| | | private String approveRemark; |
| | | |
| | | @Excel(name = "å¼å§æ¶é´", dateFormat = "yyyy-MM-dd",width = 30) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "å¼å§æ¶é´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date startDate; |
| | | |
| | | @Excel(name = "ç»ææ¶é´", dateFormat = "yyyy-MM-dd",width = 30) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "ç»ææ¶é´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date endDate; |
| | | |
| | | private BigDecimal price; |
| | | |
| | | private String location; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private LocalDateTime createTime; |
| | | |
| | | /** |
| | | * è®¾å¤æ¥ä¿®id |
| | | */ |
| | | private Long deviceRepairId; |
| | | /** |
| | | * æ¥ä¿®éé¢ |
| | | */ |
| | | private BigDecimal maintenancePrice; |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | |
| | |
| | | import com.ruoyi.approve.service.IApproveNodeService; |
| | | import com.ruoyi.common.enums.FileNameType; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.device.mapper.DeviceRepairMapper; |
| | | import com.ruoyi.device.pojo.DeviceRepair; |
| | | import com.ruoyi.other.service.impl.TempFileServiceImpl; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | |
| | | |
| | | @Autowired |
| | | private CommonFileMapper fileMapper; |
| | | @Autowired |
| | | private DeviceRepairMapper deviceRepairMapper; |
| | | |
| | | |
| | | |
| | | public ApproveProcess getApproveById(String id) { |
| | |
| | | approveProcess.setApproveUserCurrentId(approveNode1.getApproveNodeUserId()); |
| | | approveProcess.setApproveUserCurrentName(approveNode1.getApproveNodeUser()); |
| | | } |
| | | if(approveProcess.getApproveStatus().equals(2) || approveProcess.getApproveStatus().equals(3) || approveProcess.getApproveStatus().equals(4)){ |
| | | approveProcess.setApproveOverTime(new Date()); |
| | | } |
| | | approveProcessMapper.updateById(approveProcess); |
| | | |
| | | DeviceRepair deviceRepair = deviceRepairMapper.selectById(approveProcess.getDeviceRepairId()); |
| | | if(deviceRepair == null) throw new RuntimeException("è®¾å¤æ¥ä¿®ä¸åå¨"); |
| | | if(approveProcess.getApproveStatus().equals(2)){ |
| | | // åæ |
| | | deviceRepair.setStatus(1); |
| | | }else if(approveProcess.getApproveStatus().equals(3)){ |
| | | // æç» |
| | | deviceRepair.setStatus(2); |
| | | } |
| | | deviceRepairMapper.updateById(deviceRepair); |
| | | // ç»å®éä»¶ |
| | | if(!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1){ |
| | | tempFileService.migrateTempFilesToFormal(approveNode.getId(), approveNode.getTempFileIds(), FileNameType.ApproveNode.getValue()); |
| | |
| | | import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; |
| | | import com.ruoyi.approve.vo.ApproveProcessVO; |
| | | import com.ruoyi.common.enums.FileNameType; |
| | | import com.ruoyi.common.utils.OrderUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.other.service.impl.TempFileServiceImpl; |
| | | import com.ruoyi.project.system.domain.SysDept; |
| | |
| | | import com.ruoyi.sales.pojo.CommonFile; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | |
| | | approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); |
| | | approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? null : dateFormat.parse(approveProcessVO.getApproveTime())); |
| | | approveProcess.setApproveReason(approveProcessVO.getApproveReason()); |
| | | approveProcess.setDeviceRepairId(approveProcessVO.getDeviceRepairId()); |
| | | approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice()); |
| | | approveProcess.setApproveOverTime(null); |
| | | approveProcess.setApproveStatus(0); |
| | | approveProcess.setApproveDelete(0); |
| | |
| | | @Override |
| | | public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) throws IOException { |
| | | ApproveProcess approve = approveProcessMapper.selectById(approveGetAndUpdateVo.getId()); |
| | | BeanUtils.copyProperties(approveGetAndUpdateVo, approve); |
| | | approve.setApproveUserIds(approveGetAndUpdateVo.getApproveUserIds()); |
| | | approve.setApproveReason(approveGetAndUpdateVo.getApproveReason()); |
| | | SysUser sysUser = sysUserMapper.selectUserById(approveGetAndUpdateVo.getApproveUser()); |
| | |
| | | package com.ruoyi.approve.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import com.ruoyi.sales.pojo.CommonFile; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | |
| | | |
| | | private String approveUserIds; |
| | | |
| | | private String approveDeptName; |
| | | |
| | | private Long approveUser; |
| | | |
| | | private String approveTime; |
| | | |
| | | private Integer approveStatus; |
| | | |
| | | @Excel(name = "å¼å§æ¶é´", dateFormat = "yyyy-MM-dd",width = 30) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "å¼å§æ¶é´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date startDate; |
| | | |
| | | @Excel(name = "ç»ææ¶é´", dateFormat = "yyyy-MM-dd",width = 30) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "ç»ææ¶é´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date endDate; |
| | | |
| | | private BigDecimal price; |
| | | |
| | | private String location; |
| | | /** |
| | | * 审æ¹ç±»å |
| | | */ |
| | |
| | | package com.ruoyi.approve.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import com.ruoyi.sales.pojo.CommonFile; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class ApproveProcessVO { |
| | | |
| | | /** |
| | | * ä¸´æ¶æä»¶idå表 |
| | | */ |
| | | private List<String> tempFileIds; |
| | | |
| | | /** |
| | | * å®¡æ¹æµç¨id |
| | | */ |
| | | private Long id; |
| | | |
| | | |
| | | private String approveId; |
| | | /** |
| | | * 审æ¹é¨é¨id |
| | | */ |
| | | private Long approveDeptId; |
| | | |
| | | /** |
| | | * å®¡æ¹æ¶é´ |
| | | */ |
| | | private String approveTime; |
| | | |
| | | /** |
| | | * ç³è¯·äººid |
| | | */ |
| | | // ç³è¯·äºº |
| | | private Long approveUser; |
| | | |
| | | /** |
| | | * 审æ¹äººidå表 |
| | | */ |
| | | // 审æ¹äºº |
| | | private String approveUserIds; |
| | | |
| | | /** |
| | | * 审æ¹çç± |
| | | */ |
| | | private String approveReason; |
| | | |
| | | @Excel(name = "å¼å§æ¶é´", dateFormat = "yyyy-MM-dd",width = 30) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "å¼å§æ¶é´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date startDate; |
| | | |
| | | @Excel(name = "ç»ææ¶é´", dateFormat = "yyyy-MM-dd",width = 30) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "ç»ææ¶é´") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date endDate; |
| | | |
| | | private BigDecimal price; |
| | | |
| | | private String location; |
| | | |
| | | /** |
| | | * 审æ¹ç±»å |
| | | */ |
| | | private Integer approveType; |
| | | /** |
| | | * è®¾å¤æ¥ä¿®id |
| | | */ |
| | | private Long deviceRepairId; |
| | | /** |
| | | * æ¥ä¿®éé¢ |
| | | */ |
| | | private BigDecimal maintenancePrice; |
| | | } |
| | |
| | | package com.ruoyi.basic.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.basic.dto.ProductDto; |
| | |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.controller.BaseController; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import com.ruoyi.sales.service.ISalesLedgerProductService; |
| | | import com.ruoyi.sales.service.ISalesLedgerService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | |
| | | private IProductService productService; |
| | | |
| | | private IProductModelService productModelService; |
| | | |
| | | |
| | | @Autowired |
| | | private ISalesLedgerProductService salesLedgerProductService; |
| | | /** |
| | | * æ¥è¯¢äº§å |
| | | */ |
| | |
| | | if (ids == null || ids.length == 0) { |
| | | return AjaxResult.error("è¯·ä¼ å
¥è¦å é¤çID"); |
| | | } |
| | | // æ£æ¥æ¯å¦æéå®ååè®°å½å
³è该产å |
| | | LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SalesLedgerProduct::getProductId, ids); |
| | | List<SalesLedgerProduct> salesLedgerProductList = salesLedgerProductService.list(queryWrapper); |
| | | if (salesLedgerProductList.size() > 0) { |
| | | return AjaxResult.error("该产ååå¨éå®/éè´è®°å½ï¼ä¸è½å é¤"); |
| | | } |
| | | return toAjax(productService.delProductByIds(ids)); |
| | | } |
| | | |
| | |
| | | if (ids == null || ids.length == 0) { |
| | | return AjaxResult.error("è¯·ä¼ å
¥è¦å é¤çID"); |
| | | } |
| | | // æ£æ¥æ¯å¦æéå®ååè®°å½å
³è该产åè§æ ¼åå· |
| | | LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SalesLedgerProduct::getProductModelId, ids); |
| | | List<SalesLedgerProduct> salesLedgerProductList = salesLedgerProductService.list(queryWrapper); |
| | | if (salesLedgerProductList.size() > 0) { |
| | | return AjaxResult.error("该产åè§æ ¼åå·åå¨éå®/éè´è®°å½ï¼ä¸è½å é¤"); |
| | | } |
| | | return toAjax(productModelService.delProductModel(ids)); |
| | | } |
| | | |
| | |
| | | return productModelService.modelListPage(page, productDto); |
| | | } |
| | | |
| | | @ApiOperation("å页æ¥è¯¢ææäº§ååå·") |
| | | @GetMapping("/pageModel") |
| | | public IPage<ProductModel> listPageProductModel(Page<ProductModel> page, ProductModel productModel) { |
| | | return productService.listPageProductModel(page, productModel); |
| | | } |
| | | |
| | | /** |
| | | * 导å
¥äº§å |
| | | */ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.basic.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.basic.pojo.SupplierManageFile; |
| | | import com.ruoyi.basic.service.SupplierManageFileService; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * ä¾åºåéä»¶ |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/basic/supplierManageFile") |
| | | public class SupplierManageFileController { |
| | | |
| | | |
| | | @Resource |
| | | private SupplierManageFileService supplierManageFileService; |
| | | |
| | | |
| | | /** |
| | | * æ°å¢ |
| | | * @param supplierManageFile |
| | | * @return |
| | | */ |
| | | @PostMapping("/add") |
| | | public AjaxResult add(@RequestBody SupplierManageFile supplierManageFile) { |
| | | return AjaxResult.success(supplierManageFileService.save(supplierManageFile)); |
| | | } |
| | | |
| | | /** |
| | | * å é¤ |
| | | * @param ids |
| | | * @return |
| | | */ |
| | | @DeleteMapping("/del") |
| | | public AjaxResult delSupplierManageFile(@RequestBody List<Integer> ids) { |
| | | if(CollectionUtils.isEmpty(ids)){ |
| | | return AjaxResult.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); |
| | | } |
| | | //å 餿£éªéä»¶ |
| | | return AjaxResult.success(supplierManageFileService.removeBatchByIds(ids)); |
| | | } |
| | | |
| | | /** |
| | | *å页æ¥è¯¢ |
| | | * @param page |
| | | * @param supplierManageFile |
| | | * @return |
| | | */ |
| | | @GetMapping("/listPage") |
| | | public AjaxResult supplierManageFileListPage(Page page, SupplierManageFile supplierManageFile) { |
| | | return AjaxResult.success(supplierManageFileService.supplierManageFileListPage(page, supplierManageFile)); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | package com.ruoyi.basic.dto; |
| | | |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class ProductModelDto extends ProductModel { |
| | | private List<ProductStructureDto> productStructureList; |
| | | } |
| | |
| | | package com.ruoyi.basic.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | |
| | | /** |
| | |
| | | * @date 2025-05-19 |
| | | */ |
| | | public interface ProductModelMapper extends BaseMapper<ProductModel> { |
| | | |
| | | |
| | | IPage<ProductModel> listPageProductModel(Page<ProductModel> page, @Param("c") ProductModel productModel); |
| | | |
| | | ProductModel selectLatestRecord(); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.basic.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.basic.pojo.SupplierManageFile; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | @Mapper |
| | | public interface SupplierManageFileMapper extends BaseMapper<SupplierManageFile> { |
| | | |
| | | |
| | | IPage<SupplierManageFile> supplierManageFileListPage(Page page, @Param("supplierManageFile") SupplierManageFile supplierManageFile); |
| | | } |
| | |
| | | */ |
| | | @Excel(name = "客æ·åç§°") |
| | | private String customerName; |
| | | /** 客æ·åç±»ï¼é¶å®å®¢æ·ï¼è¿éåå®¢æ· */ |
| | | |
| | | @Excel(name = "客æ·åç±»") |
| | | private String customerType; |
| | | |
| | | /** |
| | | * 纳ç¨äººè¯å«å· |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @TableName("product_model") |
| | | public class ProductModel { |
| | |
| | | @Excel(name = "åä½") |
| | | private String unit; |
| | | |
| | | /** |
| | | * çäº§çæº |
| | | */ |
| | | @Excel(name = "çäº§çæº") |
| | | private String speculativeTradingName; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | @TableField(exist = false) |
| | | @Excel(name = "å
¥åºæ°é") |
| | | private BigDecimal inboundNum; |
| | | @TableField(exist = false) |
| | | @Excel(name = "åºåºæ°é") |
| | | private BigDecimal outboundNum; |
| | | @TableField(exist = false) |
| | | @Excel(name = "å©ä½åºå") |
| | | private BigDecimal stockQuantity; |
| | | } |
| | |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | // @Excel(name = "ç»´æ¤æ¶é´", width = 30, dateFormat = "yyyy-MM-dd") |
| | | private LocalDate maintainTime; |
| | | @Excel(name = "æ¯å¦ç½åå") |
| | | @ApiModelProperty(value = "æ¯å¦ç½ååï¼0æ¯ 1å¦ï¼") |
| | | private Integer isWhite; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.basic.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * ä¾åºå管ç--éä»¶ |
| | | * supplier_manage_file |
| | | */ |
| | | @TableName(value = "supplier_manage_file") |
| | | @Data |
| | | public class SupplierManageFile implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * åºå· |
| | | */ |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "æä»¶åç§°") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "æä»¶è·¯å¾") |
| | | private String url; |
| | | |
| | | @ApiModelProperty(value = "æä»¶å¤§å°") |
| | | private int fileSize; |
| | | |
| | | @ApiModelProperty(value = "ä¾åºåID") |
| | | @NotBlank(message = "ä¾åºåidä¸è½ä¸ºç©º!") |
| | | private Long supplierId; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "ä¿®æ¹æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty(value = "åå»ºç¨æ·") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Integer createUser; |
| | | |
| | | @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private Integer updateUser; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | |
| | | } |
| | |
| | | package com.ruoyi.basic.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.basic.dto.ProductDto; |
| | | import com.ruoyi.basic.dto.ProductTreeDto; |
| | | import com.ruoyi.basic.pojo.Product; |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | |
| | | List<ProductTreeDto> selectProductList(ProductDto productDto); |
| | | |
| | | IPage<ProductModel> listPageProductModel(Page<ProductModel> page, ProductModel productModel); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.basic.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.basic.pojo.SupplierManageFile; |
| | | |
| | | public interface SupplierManageFileService extends IService<SupplierManageFile> { |
| | | |
| | | |
| | | IPage<SupplierManageFile> supplierManageFileListPage(Page page, SupplierManageFile supplierManageFile); |
| | | } |
| | |
| | | // 2. æå»ºæ¥è¯¢æ¡ä»¶ï¼å¢å¼ºç©ºå¼å®å
¨ï¼ |
| | | LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>(); |
| | | String customerName = customer.getCustomerName(); |
| | | String customerType = customer.getCustomerType(); |
| | | if (StringUtils.isNotBlank(customerName)) { |
| | | queryWrapper.like(Customer::getCustomerName, customerName); |
| | | } |
| | | if (StringUtils.isNotBlank(customerType)) { |
| | | queryWrapper.like(Customer::getCustomerType, customerType); |
| | | } |
| | | |
| | | // 3. æ§è¡å页æ¥è¯¢ï¼ä¿çå页å
æ°æ®ï¼ |
| | | IPage<Customer> customerPage = customerMapper.selectPage(page, queryWrapper); |
| | |
| | | import com.ruoyi.basic.service.IProductModelService; |
| | | import com.ruoyi.common.utils.bean.BeanUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public int delProductModel(Long[] ids) { |
| | | List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>() |
| | |
| | | package com.ruoyi.basic.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.dto.ProductDto; |
| | |
| | | return tree; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ProductModel> listPageProductModel(Page<ProductModel> page, ProductModel productModel) { |
| | | return productModelMapper.listPageProductModel(page, productModel); |
| | | } |
| | | |
| | | |
| | | // éå½æå»ºåèç¹ |
| | |
| | | @Override |
| | | public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, String fileType) { |
| | | // å 餿§å¾ |
| | | deleteStorageAttachment(new StorageAttachment(fileType, (long) recordType.ordinal(), recordId)); |
| | | // deleteStorageAttachment(new StorageAttachment(fileType, (long) recordType.ordinal(), recordId)); |
| | | for (StorageAttachment attachment : attachments) { |
| | | // è·åå
³èè®°å½ |
| | | StorageBlob storageBlob = attachment.getStorageBlobDTO(); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.basic.service.impl; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.mapper.SupplierManageFileMapper; |
| | | import com.ruoyi.basic.pojo.SupplierManageFile; |
| | | import com.ruoyi.basic.service.SupplierManageFileService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @AllArgsConstructor |
| | | @Service |
| | | public class SupplierManageFileServiceImpl extends ServiceImpl<SupplierManageFileMapper, SupplierManageFile> implements SupplierManageFileService { |
| | | |
| | | private SupplierManageFileMapper supplierManageFileMapper; |
| | | |
| | | @Override |
| | | public IPage<SupplierManageFile> supplierManageFileListPage(Page page, SupplierManageFile supplierManageFile) { |
| | | return supplierManageFileMapper.supplierManageFileListPage(page, supplierManageFile); |
| | | } |
| | | } |
| | |
| | | * å
¬åç±»åï¼1æ¾åéç¥ 2设å¤ç»´ä¿®éç¥ï¼ |
| | | */ |
| | | @ApiModelProperty("å
¬åç±»åï¼1æ¾åéç¥ 2设å¤ç»´ä¿®éç¥ï¼") |
| | | private Integer type; |
| | | private String type; |
| | | |
| | | /** |
| | | * ç¶æï¼0è稿 1åå¸ 2å·²ä¸çº¿ï¼ |
| | |
| | | @ApiModelProperty("ä¼å
级(1æ®é 2éè¦ 3ç´§æ¥)") |
| | | private Integer priority; |
| | | |
| | | |
| | | /** |
| | | * è¿ææ¶é´ |
| | | */ |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.collaborativeApproval.dto.NoticeDTO; |
| | |
| | | import com.ruoyi.collaborativeApproval.service.NoticeService; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | |
| | | |
| | | @Override |
| | | public List<NoticeDTO> selectCount() { |
| | | List<Notice> notices = noticeMapper.selectList(Wrappers.lambdaQuery(Notice.class).groupBy(Notice::getType)); |
| | | List<NoticeDTO> result = new ArrayList<>(); |
| | | NoticeDTO notice = new NoticeDTO(); |
| | | notice.setType(1); |
| | | notice.setCount(noticeMapper.selectCount(new LambdaQueryWrapper<Notice>().eq(Notice::getType, 1))); |
| | | result.add(notice); |
| | | |
| | | NoticeDTO notice1 = new NoticeDTO(); |
| | | notice1.setType(2); |
| | | notice1.setCount(noticeMapper.selectCount(new LambdaQueryWrapper<Notice>().eq(Notice::getType, 2))); |
| | | result.add(notice1); |
| | | |
| | | for (Notice notice : notices) { |
| | | NoticeDTO notice1 = new NoticeDTO(); |
| | | BeanUtils.copyProperties(notice, notice1); |
| | | notice1.setCount(noticeMapper.selectCount(new LambdaQueryWrapper<Notice>().eq(Notice::getType, notice.getType()))); |
| | | result.add(notice1); |
| | | } |
| | | return result; |
| | | } |
| | | } |
| | |
| | | tenantId = SecurityUtils.getLoginUser().getTenantId(); |
| | | } catch (Exception ignored) { |
| | | } |
| | | System.out.println("æ§è¡æå
¥å¡«å
..."); |
| | | this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); |
| | | this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); |
| | | this.strictInsertFill(metaObject, "createUser", Integer.class, userId); |
| | |
| | | this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // èµ·å§çæ¬ 3.3.0(æ¨è) |
| | | this.strictUpdateFill(metaObject, "updateUser", Integer.class, userId); |
| | | } |
| | | } |
| | | } |
| | |
| | | // æ§è¡æ¥è¯¢ |
| | | Long aLong = mapper.selectCount(queryWrapper); |
| | | // æ¼æ¥è®¢åç¼å· preFix + æ¶é´ï¼yyyyMMddï¼ + è®¢åæ°é(001) |
| | | return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1));} |
| | | return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1)); |
| | | } |
| | | } |
| | |
| | | @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") |
| | | private Integer updateUser; |
| | | |
| | | private Integer id; |
| | | private Long id; |
| | | } |
| | |
| | | package com.ruoyi.compensationperformance.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.controller.BaseController; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | | import com.ruoyi.purchase.dto.PaymentRegistrationDto; |
| | | import com.ruoyi.staff.mapper.StaffOnJobMapper; |
| | | import com.ruoyi.staff.pojo.StaffOnJob; |
| | | 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.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author :yys |
| | |
| | | util.exportExcel(response, list, "导åºèªèµç®¡çå表"); |
| | | } |
| | | |
| | | @Log(title = "ä¸è½½èªèµç®¡çå表模æ¿", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/exportTemplate") |
| | | public void exportTemplate(HttpServletResponse response) { |
| | | List<CompensationPerformance> list = new ArrayList<>(); |
| | | ExcelUtil<CompensationPerformance> util = new ExcelUtil<>(CompensationPerformance.class); |
| | | util.exportExcel(response, list, "ä¸è½½èªèµç®¡çå表模æ¿"); |
| | | } |
| | | |
| | | @Autowired |
| | | private SysUserMapper sysUserMapper; |
| | | |
| | | @Log(title = "导å
¥èªèµç®¡çå表", businessType = BusinessType.IMPORT) |
| | | @PostMapping("/importData") |
| | | public AjaxResult importData(MultipartFile file) throws Exception { |
| | | ExcelUtil<CompensationPerformance> util = new ExcelUtil<>(CompensationPerformance.class); |
| | | List<CompensationPerformance> list = util.importExcel(file.getInputStream()); |
| | | list.forEach(item->{ |
| | | SysUser staffOnJob = sysUserMapper.selectUserByNickName(item.getName()); |
| | | if(staffOnJob!=null){ |
| | | item.setStaffId(staffOnJob.getUserId()); |
| | | } |
| | | }); |
| | | boolean b = compensationPerformanceService.saveBatch(list); |
| | | return AjaxResult.success(b); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | private Long id; |
| | | |
| | | /** |
| | | * åå·¥id |
| | | * ç¨æ·id |
| | | */ |
| | | @ApiModelProperty("åå·¥id") |
| | | @ApiModelProperty("ç¨æ·id") |
| | | private Long staffId; |
| | | |
| | | /** |
| | |
| | | * åºåºå¤å¤©æ° |
| | | */ |
| | | @ApiModelProperty("åºåºå¤å¤©æ°") |
| | | @Excel(name = "åºåºå¤å¤©æ°") |
| | | // @Excel(name = "åºåºå¤å¤©æ°") |
| | | private BigDecimal shouldAttendedNum; |
| | | |
| | | /** |
| | | * å®é
åºå¤å¤©æ° |
| | | */ |
| | | @ApiModelProperty("å®é
åºå¤å¤©æ°") |
| | | @Excel(name = "å®é
åºå¤å¤©æ°") |
| | | // @Excel(name = "å®é
åºå¤å¤©æ°") |
| | | private BigDecimal actualAttendedNum; |
| | | |
| | | |
| | |
| | | * åºæ¬å·¥èµ |
| | | */ |
| | | @ApiModelProperty("åºæ¬å·¥èµ") |
| | | @Excel(name = "åºæ¬å·¥èµ") |
| | | // @Excel(name = "åºæ¬å·¥èµ") |
| | | private BigDecimal basicSalary; |
| | | |
| | | /** |
| | | * å²ä½å·¥èµ |
| | | */ |
| | | @ApiModelProperty("å²ä½å·¥èµ") |
| | | @Excel(name = "å²ä½å·¥èµ") |
| | | // @Excel(name = "å²ä½å·¥èµ") |
| | | private BigDecimal postSalary; |
| | | |
| | | /** |
| | | * å
¥ç¦»èç¼ºå¤æ£æ¬¾ |
| | | */ |
| | | @ApiModelProperty("å
¥ç¦»èç¼ºå¤æ£æ¬¾") |
| | | @Excel(name = "å
¥ç¦»èç¼ºå¤æ£æ¬¾") |
| | | // @Excel(name = "å
¥ç¦»èç¼ºå¤æ£æ¬¾") |
| | | private BigDecimal deductionAbsenteeism; |
| | | |
| | | |
| | |
| | | * ç
åæ£æ¬¾ |
| | | */ |
| | | @ApiModelProperty("ç
åæ£æ¬¾") |
| | | @Excel(name = "ç
åæ£æ¬¾") |
| | | // @Excel(name = "ç
åæ£æ¬¾") |
| | | private BigDecimal sickLeaveDeductions; |
| | | |
| | | /** |
| | | * äºåæ£æ¬¾ |
| | | */ |
| | | @ApiModelProperty("äºåæ£æ¬¾") |
| | | @Excel(name = "äºåæ£æ¬¾") |
| | | // @Excel(name = "äºåæ£æ¬¾") |
| | | private BigDecimal deductionPersonalLeave; |
| | | /** |
| | | * å¿è®°æå¡æ£æ¬¾ |
| | | */ |
| | | @ApiModelProperty("å¿è®°æå¡æ£æ¬¾") |
| | | @Excel(name = "å¿è®°æå¡æ£æ¬¾") |
| | | // @Excel(name = "å¿è®°æå¡æ£æ¬¾") |
| | | private BigDecimal forgetClockDeduct; |
| | | |
| | | /** |
| | | * 绩æå¾å |
| | | */ |
| | | @ApiModelProperty("绩æå¾å") |
| | | @Excel(name = "绩æå¾å") |
| | | // @Excel(name = "绩æå¾å") |
| | | private BigDecimal performanceScore; |
| | | |
| | | /** |
| | | * 绩æå·¥èµ |
| | | */ |
| | | @ApiModelProperty("绩æå·¥èµ") |
| | | @Excel(name = "绩æå·¥èµ") |
| | | // @Excel(name = "绩æå·¥èµ") |
| | | private BigDecimal performancePay; |
| | | |
| | | |
| | |
| | | * åºåå计 |
| | | */ |
| | | @ApiModelProperty("åºåå计") |
| | | @Excel(name = "åºåå计") |
| | | // @Excel(name = "åºåå计") |
| | | private BigDecimal payableWages; |
| | | |
| | | /** |
| | | * 社ä¿ä¸ªäºº |
| | | */ |
| | | @ApiModelProperty("社ä¿ä¸ªäºº") |
| | | @Excel(name = "社ä¿ä¸ªäºº") |
| | | // @Excel(name = "社ä¿ä¸ªäºº") |
| | | private BigDecimal socialSecurityIndividuals; |
| | | /** |
| | | * 社ä¿å
¬å¸ |
| | | */ |
| | | @ApiModelProperty("社ä¿å
¬å¸") |
| | | @Excel(name = "社ä¿å
¬å¸") |
| | | // @Excel(name = "社ä¿å
¬å¸") |
| | | private BigDecimal socialSecurityCompanies; |
| | | |
| | | /** |
| | | * 社ä¿å计 |
| | | */ |
| | | @ApiModelProperty("社ä¿å计") |
| | | @Excel(name = "社ä¿å计") |
| | | // @Excel(name = "社ä¿å计") |
| | | private BigDecimal socialSecurityTotal; |
| | | |
| | | /** |
| | | * å
¬ç§¯éå计 |
| | | */ |
| | | @ApiModelProperty("å
¬ç§¯éå计") |
| | | @Excel(name = "å
¬ç§¯éå计") |
| | | // @Excel(name = "å
¬ç§¯éå计") |
| | | private BigDecimal providentFundTotal; |
| | | /** |
| | | * å
¬ç§¯éå
¬å¸ |
| | | */ |
| | | @ApiModelProperty("å
¬ç§¯éå
¬å¸") |
| | | @Excel(name = "å
¬ç§¯éå
¬å¸") |
| | | // @Excel(name = "å
¬ç§¯éå
¬å¸") |
| | | private BigDecimal providentFundCompany; |
| | | |
| | | /** |
| | | * å
¬ç§¯é个人 |
| | | */ |
| | | @ApiModelProperty("å
¬ç§¯é个人") |
| | | @Excel(name = "å
¬ç§¯é个人") |
| | | // @Excel(name = "å
¬ç§¯é个人") |
| | | private BigDecimal providentFundIndividuals; |
| | | |
| | | /** |
| | | * åºç¨å·¥èµ |
| | | */ |
| | | @ApiModelProperty("åºç¨å·¥èµ") |
| | | @Excel(name = "åºç¨å·¥èµ") |
| | | // @Excel(name = "åºç¨å·¥èµ") |
| | | private BigDecimal taxableWaget; |
| | | /** |
| | | * 个人æå¾ç¨ |
| | | */ |
| | | @ApiModelProperty("个人æå¾ç¨") |
| | | @Excel(name = "个人æå¾ç¨") |
| | | // @Excel(name = "个人æå¾ç¨") |
| | | private BigDecimal personalIncomeTax; |
| | | |
| | | /** |
| | | * å®åå·¥èµ |
| | | */ |
| | | @ApiModelProperty("å®åå·¥èµ") |
| | | @Excel(name = "å®åå·¥èµ") |
| | | @Excel(name = "å®åå·¥èµ", width = 30) |
| | | private BigDecimal actualWages; |
| | | |
| | | /** |
| | |
| | | public void export(HttpServletResponse response, Long[] ids) { |
| | | deviceLedgerService.export(response, ids); |
| | | } |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @GetMapping("/report/forms") |
| | | @ApiOperation("æ¥è¯¢è®¾å¤å°è´¦å¾è¡¨æ°æ®") |
| | | public AjaxResult report() { |
| | | return AjaxResult.success(deviceLedgerService.report()); |
| | | } |
| | | @PostMapping("import") |
| | | @ApiModelProperty("导å
¥è®¾å¤å°è´¦") |
| | | public AjaxResult importData(MultipartFile file) throws IOException { |
| | |
| | | @PostMapping ("maintenance") |
| | | @ApiModelProperty("ä¿®æ¹è®¾å¤ä¿å
»") |
| | | public AjaxResult maintenance(@RequestBody DeviceMaintenance deviceMaintenance) { |
| | | deviceMaintenance.setStatus(1); |
| | | return deviceMaintenanceService.updateDeviceDeviceMaintenance(deviceMaintenance); |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.device.dto; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * 设å¤èµäº§ä¿¡æ¯Dto-èµäº§æ¥è¡¨ |
| | | */ |
| | | @Data |
| | | public class DeviceAssetInfoDto { |
| | | /** |
| | | * è®¾å¤æ»æ° |
| | | */ |
| | | private Integer totalEquipment; |
| | | /** |
| | | * èµäº§åå¼ |
| | | */ |
| | | private BigDecimal totalOriginalValue; |
| | | /** |
| | | * ç´¯è®¡ææ§ |
| | | */ |
| | | private BigDecimal totalDepreciation; |
| | | /** |
| | | * åå¼ |
| | | */ |
| | | private BigDecimal totalNetValue; |
| | | } |
| | |
| | | private String deviceModel; |
| | | |
| | | /** |
| | | * 设å¤åç |
| | | */ |
| | | @ApiModelProperty("设å¤åç") |
| | | private String deviceBrand; |
| | | |
| | | /** |
| | | * åæ¾ä½ç½® |
| | | */ |
| | | @ApiModelProperty("åæ¾ä½ç½®") |
| | | private String storageLocation; |
| | | |
| | | |
| | | /** |
| | | * ä¾åºååç§° |
| | | */ |
| | | private String supplierName; |
| | |
| | | |
| | | |
| | | @ApiModelProperty("设å¤ä¿å
»id") |
| | | |
| | | private Long id; |
| | | |
| | | @ApiModelProperty("设å¤ä¿å
»éé¢") |
| | |
| | | private String maintenanceActuallyTimeReq; |
| | | |
| | | @ApiModelProperty("ä¿å
»ç»æ 0 ç»´ä¿® 1 å®å¥½") |
| | | private Integer maintenanceResult; |
| | | private String maintenanceResult; |
| | | |
| | | @ApiModelProperty("ç¶æ 0 å¾
ä¿å
» 1 å®ç»") |
| | | @ApiModelProperty("ç¶æ 0 å¾
ä¿å
» 1 å®ç» 2 失败") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty("å建æ¶é´") |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.FieldFill; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | |
| | | @ApiModelProperty("ç§æ·id") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | |
| | | @ApiModelProperty("ç»´ä¿®ä»·æ ¼") |
| | | private String maintenancePrice; |
| | | } |
| | | |
| | |
| | | @Excel(name = "ä¿å
ȍȾ") |
| | | private String maintenanceResult; |
| | | |
| | | @ApiModelProperty("ç¶æ 0 å¾
ä¿å
» 1 å®ç»") |
| | | @ApiModelProperty("ç¶æ 0 å¾
ä¿å
» 1 å®ç» 2 失败") |
| | | @Excel(name = "ç¶æ") |
| | | private String status; |
| | | |
| | |
| | | private String deviceModel; |
| | | |
| | | /** |
| | | * 设å¤åç |
| | | */ |
| | | @ApiModelProperty("设å¤åç") |
| | | private String deviceBrand; |
| | | |
| | | /** |
| | | * åæ¾ä½ç½® |
| | | */ |
| | | @ApiModelProperty("åæ¾ä½ç½®") |
| | | private String storageLocation; |
| | | |
| | | /** |
| | | * ä¾åºååç§° |
| | | */ |
| | | private String supplierName; |
| | |
| | | private LocalDateTime maintenanceActuallyTime; |
| | | |
| | | @ApiModelProperty("ä¿å
»ç»æ 0 ç»´ä¿® 1 å®å¥½") |
| | | private Integer maintenanceResult; |
| | | private String maintenanceResult; |
| | | |
| | | @ApiModelProperty("ç¶æ 0 å¾
ä¿å
» 1 å®ç»") |
| | | @ApiModelProperty("ç¶æ 0 å¾
ä¿å
» 1 å®ç» 2 失败") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty("å建æ¶é´") |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.device.dto.DeviceAssetInfoDto; |
| | | import com.ruoyi.device.dto.DeviceLedgerDto; |
| | | import com.ruoyi.device.pojo.DeviceLedger; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | |
| | | void export(HttpServletResponse response, Long[] ids); |
| | | |
| | | Boolean importData(MultipartFile file) throws IOException; |
| | | DeviceAssetInfoDto report(); |
| | | } |
| | |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.bean.BeanUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.device.dto.DeviceAssetInfoDto; |
| | | import com.ruoyi.device.dto.DeviceLedgerDto; |
| | | import com.ruoyi.device.execl.DeviceLedgerExeclDto; |
| | | import com.ruoyi.device.mapper.DeviceLedgerMapper; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.time.ZoneOffset; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | |
| | | |
| | | @Override |
| | | public AjaxResult saveDeviceLedger(DeviceLedger deviceLedger) { |
| | | // LambdaQueryWrapper<DeviceLedger> deviceLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | // deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceModel,deviceLedger.getDeviceModel()); |
| | | // if (this.count(deviceLedgerLambdaQueryWrapper) > 0) { |
| | | // return AjaxResult.error("设å¤åå·å·²åå¨"); |
| | | // } |
| | | LambdaQueryWrapper<DeviceLedger> deviceLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceName,deviceLedger.getDeviceName()); |
| | | if (this.count(deviceLedgerLambdaQueryWrapper) > 0) { |
| | | return AjaxResult.error("设å¤åç§°å·²åå¨"); |
| | | } |
| | | boolean save = this.save(deviceLedger); |
| | | if (save){ |
| | | return AjaxResult.success(); |
| | |
| | | |
| | | return true; |
| | | } |
| | | @Override |
| | | public DeviceAssetInfoDto report() { |
| | | List<DeviceLedger> list = deviceLedgerMapper.selectList(null); |
| | | DeviceAssetInfoDto deviceAssetInfoDto = new DeviceAssetInfoDto(); |
| | | deviceAssetInfoDto.setTotalEquipment(list.stream().map(DeviceLedger::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add).intValue()); |
| | | deviceAssetInfoDto.setTotalOriginalValue(list.stream().map(DeviceLedger::getTaxIncludingPriceTotal).reduce(BigDecimal.ZERO, BigDecimal::add)); |
| | | deviceAssetInfoDto.setTotalNetValue(list.stream().map(DeviceLedger::getUnTaxIncludingPriceTotal).reduce(BigDecimal.ZERO, BigDecimal::add)); |
| | | deviceAssetInfoDto.setTotalDepreciation(deviceAssetInfoDto.getTotalOriginalValue().subtract(deviceAssetInfoDto.getTotalNetValue())); |
| | | return deviceAssetInfoDto; |
| | | } |
| | | } |
| | |
| | | supplierManageList.forEach(deviceMaintenance -> { |
| | | DeviceMaintenanceExeclDto deviceRepairExeclDto = new DeviceMaintenanceExeclDto(); |
| | | BeanUtils.copyProperties(deviceMaintenance,deviceRepairExeclDto); |
| | | deviceRepairExeclDto.setStatus(deviceMaintenance.getStatus() == 0 ? "å¾
ç»´ä¿®" : "å®ç»"); |
| | | deviceRepairExeclDto.setMaintenanceResult(deviceMaintenance.getMaintenanceResult() != null && deviceMaintenance.getMaintenanceResult() == 0 ? "ç»´ä¿®" : "å®å¥½"); |
| | | |
| | | deviceRepairExeclDto.setStatus(deviceMaintenance.getStatus() == 0 ? "å¾
ç»´ä¿®" : deviceMaintenance.getStatus() == 1 ? "å®ç»" : "失败"); |
| | | // deviceRepairExeclDto.setMaintenanceResult(deviceMaintenance.getMaintenanceResult() != null && deviceMaintenance.getMaintenanceResult() == 0 ? "ç»´ä¿®" : "å®å¥½"); |
| | | deviceLedgerExeclDtos.add(deviceRepairExeclDto); |
| | | }); |
| | | ExcelUtil<DeviceMaintenanceExeclDto> util = new ExcelUtil<DeviceMaintenanceExeclDto>(DeviceMaintenanceExeclDto.class); |
| | |
| | | supplierManageList.stream().forEach(deviceRepair -> { |
| | | DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto(); |
| | | BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto); |
| | | deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "å¾
ç»´ä¿®" : "å®ç»"); |
| | | deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "å¾
ç»´ä¿®" : deviceRepair.getStatus() == 1 ? "å®ç»" : "失败"); |
| | | |
| | | deviceLedgerExeclDtos.add(deviceRepairExeclDto); |
| | | }); |
| | |
| | | supplierManageList.stream().forEach(deviceRepair -> { |
| | | DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto(); |
| | | BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto); |
| | | deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "å¾
ç»´ä¿®" : "å®ç»"); |
| | | deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "å¾
ç»´ä¿®" : deviceRepair.getStatus() == 1 ? "å®ç»" : "失败"); |
| | | |
| | | deviceLedgerExeclDtos.add(deviceRepairExeclDto); |
| | | }); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.dto; |
| | | |
| | | import com.ruoyi.staff.pojo.StaffOnJob; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/11/5 14:34 |
| | | */ |
| | | @Data |
| | | public class WordDateDto extends StaffOnJob { |
| | | |
| | | // å忥æç¸å
³ |
| | | private String qyear; // ç¾è®¢æ¥æ-å¹´ |
| | | private String qmoth; // ç¾è®¢æ¥æ-æï¼æ³¨æåææ¡£æ¼åï¼qmoth=monthï¼ |
| | | private String qday; // ç¾è®¢æ¥æ-æ¥ |
| | | |
| | | private String syear = ""; // ååå¼å§å¹´ |
| | | private String smoth = ""; // ååå¼å§æ |
| | | private String sday = ""; // ååå¼å§æ¥ |
| | | private String eyear = ""; // ååç»æå¹´ï¼ä»
Aç±»åéè¦ï¼ |
| | | private String emoth = ""; // ååç»ææï¼ä»
Aç±»åéè¦ï¼ |
| | | private String eday = ""; // ååç»ææ¥ï¼ä»
Aç±»åéè¦ï¼ |
| | | |
| | | // è¯ç¨æç¸å
³ |
| | | private String styear = ""; // è¯ç¨æå¼å§å¹´ |
| | | private String stmoth = ""; // è¯ç¨æå¼å§æ |
| | | private String stday = ""; // è¯ç¨æå¼å§æ¥ |
| | | private String seyear = ""; // è¯ç¨æç»æå¹´ |
| | | private String semoth = ""; // è¯ç¨æç»ææ |
| | | private String seday = ""; // è¯ç¨æç»ææ¥ |
| | | |
| | | private String bsyear = ""; // ååå¼å§å¹´ |
| | | private String bsmoth = ""; // ååå¼å§æ |
| | | private String bsday = ""; // ååå¼å§æ¥ |
| | | |
| | | // è¯ç¨æç¸å
³ |
| | | private String bstyear = ""; // è¯ç¨æå¼å§å¹´ |
| | | private String bstmoth = ""; // è¯ç¨æå¼å§æ |
| | | private String bstday = ""; // è¯ç¨æå¼å§æ¥ |
| | | private String bseyear = ""; // è¯ç¨æç»æå¹´ |
| | | private String bsemoth = ""; // è¯ç¨æç»ææ |
| | | private String bseday = ""; // è¯ç¨æç»ææ¥ |
| | | |
| | | private String csyear = ""; // ååå¼å§å¹´ |
| | | private String csmoth = ""; // ååå¼å§æ |
| | | private String csday = ""; // ååå¼å§æ¥ |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.home.dto; |
| | | |
| | | import com.ruoyi.production.dto.ProductOrderDto; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel |
| | | public class ProductionProgressDto { |
| | | @ApiModelProperty("æ»è®¢åæ°") |
| | | private Integer totalOrderCount; |
| | | |
| | | @ApiModelProperty("å·²å®æè®¢åæ°") |
| | | private Integer completedOrderCount; |
| | | @ApiModelProperty("æªå®æè®¢åæ°") |
| | | private Integer uncompletedOrderCount; |
| | | @ApiModelProperty("æ»ä½å®æè¿åº¦") |
| | | private BigDecimal completedProgressCount; |
| | | @ApiModelProperty("订å详æ
") |
| | | private List<ProductOrderDto> completedOrderDetails; |
| | | } |
| | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | @TableField(exist = false) |
| | | private String dateStr; |
| | | } |
| | |
| | | @ApiModelProperty(value = "软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤") |
| | | private Integer deleted; |
| | | |
| | | @TableField(exist = false) |
| | | private String dateStr; |
| | | |
| | | @ApiModelProperty(value = "å建该记å½çç¨æ·") |
| | | @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT) |
| | | private Integer createUser; |
| | | |
| | | @ApiModelProperty(value = "è®°å½å建æ¶é´") |
| | | @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | // @JsonFormat(pattern = "yyyy-MM-dd") |
| | | // @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "æåä¿®æ¹è¯¥è®°å½çç¨æ·") |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | |
| | | dto.setInspector(inspectorNames); |
| | | } |
| | | |
| | | dto.setDateStr(inspectionTask.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| | | |
| | | // åå§åä¸ä¸ªéä»¶å表 |
| | | dto.setBeforeProduction(new ArrayList<>()); |
| | | dto.setAfterProduction(new ArrayList<>()); |
| | |
| | | package com.ruoyi.inspectiontask.service.impl; |
| | | |
| | | import org.quartz.*; |
| | | import org.quartz.spi.TriggerFiredBundle; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.config.AutowireCapableBeanFactory; |
| | |
| | | import org.springframework.context.ApplicationContextAware; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.core.io.ClassPathResource; |
| | | import org.springframework.scheduling.quartz.JobDetailFactoryBean; |
| | | import org.springframework.scheduling.quartz.SchedulerFactoryBean; |
| | | import org.springframework.scheduling.quartz.SpringBeanJobFactory; |
| | | |
| | | import javax.sql.DataSource; |
| | | |
| | | @Configuration |
| | | public class QuartzConfig { |
| | | @Autowired |
| | | private ApplicationContext applicationContext; |
| | | |
| | | // å设已é
ç½®å为dataSourceçæ°æ®æºBean |
| | | @Autowired |
| | | private DataSource dataSource; |
| | | |
| | | @Bean |
| | | public SchedulerFactoryBean schedulerFactoryBean() { |
| | |
| | | jobFactory.setApplicationContext(applicationContext); |
| | | schedulerFactory.setJobFactory(jobFactory); |
| | | |
| | | // å¨schedulerFactoryBean()æ¹æ³ä¸æ·»å |
| | | schedulerFactory.setDataSource(dataSource); |
| | | // å
¶ä»é
ç½®... |
| | | return schedulerFactory; |
| | | } |
| | | |
| | | @Bean |
| | | public Scheduler scheduler() { |
| | | return schedulerFactoryBean().getScheduler(); |
| | | } |
| | | |
| | | // èªå®ä¹JobFactoryï¼æ¯æèªå¨æ³¨å
¥ |
| | | public static class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory |
| | | implements ApplicationContextAware { |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.sql.DataSource; |
| | | import java.io.Serializable; |
| | | import java.time.DayOfWeek; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | |
| | | |
| | | @Component |
| | | @DisallowConcurrentExecution // ç¦æ¢å¹¶åæ§è¡åä¸ä¸ªJob |
| | | public class TimingTaskJob implements Job { |
| | | public class TimingTaskJob implements Job, Serializable { |
| | | private static final long serialVersionUID = 1L; // å¿
é¡»å®ä¹åºååID |
| | | |
| | | @Autowired |
| | | private TimingTaskMapper timingTaskMapper; |
| | |
| | | throw new SchedulerException("Existing trigger is not a CronTrigger"); |
| | | } |
| | | |
| | | // æå»ºæ°è§¦åå¨ |
| | | Trigger newTrigger = TriggerBuilder.newTrigger() |
| | | .withIdentity(triggerKey) |
| | | .withDescription(task.getTaskName()) |
| | | .withSchedule(CronScheduleBuilder.cronSchedule(convertToCronExpression(task))) |
| | | .startAt(Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant())) |
| | | .forJob(oldTrigger.getJobKey()) |
| | | // 3. æå»ºCronTriggerï¼ç¡®ä¿æä¹
åé
ç½® |
| | | CronTrigger newTrigger = TriggerBuilder.newTrigger() |
| | | .withIdentity(triggerKey) // å¯ä¸æ è¯ï¼ç¨äºæä¹
ååå¨ |
| | | .withDescription(task.getTaskName() + "_TRIGGER") // 触åå¨æè¿° |
| | | .forJob(oldTrigger.getJobKey()) // å
³è对åºçJob |
| | | .withSchedule(CronScheduleBuilder |
| | | .cronSchedule(convertToCronExpression(task)) // éè¿æ§è¡æ¶ççç¥ï¼æ ¹æ®ä¸å¡è°æ´ï¼ |
| | | ) |
| | | // 4. 设置å¼å§æ¶é´ï¼è¥ä¸ºnullåç«å³çæï¼ |
| | | .startAt(task.getNextExecutionTime() != null |
| | | ? Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant()) |
| | | : new Date()) |
| | | .build(); |
| | | |
| | | // æå»ºæ°è§¦åå¨ |
| | | // Trigger newTrigger = TriggerBuilder.newTrigger() |
| | | // .withIdentity(triggerKey) |
| | | // .withDescription(task.getTaskName()) |
| | | // .withSchedule(CronScheduleBuilder.cronSchedule(convertToCronExpression(task))) |
| | | // .startAt(Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant())) |
| | | // .forJob(oldTrigger.getJobKey()) |
| | | // .build(); |
| | | |
| | | scheduler.rescheduleJob(triggerKey, newTrigger); |
| | | } |
| | |
| | | } |
| | | |
| | | private JobDetail buildJobDetail(TimingTask task) { |
| | | JobDataMap jobDataMap = new JobDataMap(); |
| | | jobDataMap.put("taskId", task.getId()); |
| | | // 1. æå»ºå¯ä¸JobKeyï¼åºäºä»»å¡IDï¼ç¡®ä¿éå¯åè½è¯å«ï¼ |
| | | JobKey jobKey = new JobKey("timingTask_" + task.getId()); |
| | | |
| | | // 2. å°è£
任塿°æ®ï¼ä»
使ç¨åºæ¬ç±»åï¼ç¡®ä¿å¯åºååï¼ |
| | | JobDataMap jobDataMap = new JobDataMap(); |
| | | jobDataMap.put("taskId", task.getId()); // ä»»å¡IDï¼Longï¼å¯åºååï¼ |
| | | jobDataMap.put("taskName", task.getTaskName()); // ä»»å¡åç§°ï¼Stringï¼å¯åºååï¼ |
| | | jobDataMap.put("taskType", task.getFrequencyType()); // ä»»å¡ç±»åï¼Stringï¼ |
| | | // æéæ·»å å
¶ä»å¿
è¦çåºæ¬ç±»ååæ° |
| | | |
| | | // 3. æå»ºJobDetailï¼è®¾ç½®æä¹
åç¸å
³å±æ§ |
| | | return JobBuilder.newJob(TimingTaskJob.class) |
| | | .withIdentity("timingTask_" + task.getId()) |
| | | .withDescription(task.getTaskName()) |
| | | .usingJobData(jobDataMap) |
| | | .storeDurably() |
| | | .withIdentity(jobKey) // å¯ä¸æ è¯ï¼ç¨äºæä¹
ååå¨ |
| | | .withDescription(task.getTaskName()) // ä»»å¡æè¿°ï¼åå
¥æ°æ®åº |
| | | .usingJobData(jobDataMap) // ç»å®ä»»å¡æ°æ® |
| | | .storeDurably(true) // å³ä½¿æ²¡æè§¦åå¨å
³è乿ä¹
åä¿å |
| | | .requestRecovery(true) // å½è°åº¦å¨å´©æºåæ¢å¤æ¶ï¼éæ°æ§è¡æªå®æçä»»å¡ |
| | | .build(); |
| | | } |
| | | |
| | | private Trigger buildJobTrigger(TimingTask task, JobDetail jobDetail) { |
| | | // 1. æå»ºå¯ä¸TriggerKeyï¼åºäºä»»å¡IDï¼ |
| | | TriggerKey triggerKey = new TriggerKey("trigger_" + task.getId()); |
| | | |
| | | // 2. çæCron表达å¼ï¼åé»è¾ä¸åï¼ |
| | | String cronExpression = convertToCronExpression(task); |
| | | |
| | | TriggerBuilder<CronTrigger> triggerBuilder = TriggerBuilder.newTrigger() |
| | | .withIdentity("trigger_" + task.getId()) |
| | | .withDescription(task.getTaskName()) |
| | | .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)); |
| | | |
| | | if (jobDetail != null) { |
| | | triggerBuilder.forJob(jobDetail); |
| | | } |
| | | |
| | | if (task.getNextExecutionTime() != null) { |
| | | triggerBuilder.startAt(Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant())); |
| | | } |
| | | |
| | | return triggerBuilder.build(); |
| | | // 3. æå»ºCronTriggerï¼ç¡®ä¿æä¹
åé
ç½® |
| | | return TriggerBuilder.newTrigger() |
| | | .withIdentity(triggerKey) // å¯ä¸æ è¯ï¼ç¨äºæä¹
ååå¨ |
| | | .withDescription(task.getTaskName() + "_TRIGGER") // 触åå¨æè¿° |
| | | .forJob(jobDetail) // å
³è对åºçJob |
| | | .withSchedule(CronScheduleBuilder |
| | | .cronSchedule(cronExpression) |
| | | .withMisfireHandlingInstructionDoNothing() // éè¿æ§è¡æ¶ççç¥ï¼æ ¹æ®ä¸å¡è°æ´ï¼ |
| | | ) |
| | | // 4. 设置å¼å§æ¶é´ï¼è¥ä¸ºnullåç«å³çæï¼ |
| | | .startAt(task.getNextExecutionTime() != null |
| | | ? Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant()) |
| | | : new Date()) |
| | | .build(); |
| | | } |
| | | private String convertToCronExpression(TimingTask task) { |
| | | // åæ°æ ¡éª |
| | |
| | | |
| | | // æ¶éå·¡æ£äººIDï¼å¤ä¸ªID以éå·åéï¼ |
| | | taskPage.getRecords().forEach(task -> { |
| | | task.setDateStr(task.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| | | if (StringUtils.isNotBlank(task.getInspectorIds())) { |
| | | Arrays.stream(task.getInspectorIds().split(",")) |
| | | .filter(StringUtils::isNotBlank) |
| | |
| | | public int addOrEditTimingTask(TimingTaskDto timingTaskDto) throws SchedulerException { |
| | | TimingTask timingTask = new TimingTask(); |
| | | BeanUtils.copyProperties(timingTaskDto, timingTask); |
| | | // 1. è§£æå符串为 LocalDateï¼åªå
å«å¹´ææ¥ï¼ |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | LocalDate localDate = LocalDate.parse(timingTaskDto.getDateStr(), formatter); |
| | | |
| | | // 2. è·åå½åç³»ç»ç LocalTimeï¼å
嫿¶åç§ï¼ |
| | | LocalTime currentTime = LocalTime.now(); |
| | | |
| | | // 3. åå¹¶ LocalDate åå½å LocalTime 为 LocalDateTime |
| | | LocalDateTime localDateTime = LocalDateTime.of(localDate, currentTime); |
| | | timingTask.setCreateTime(localDateTime); |
| | | // 设置å建人信æ¯åé»è®¤å¼ |
| | | if (Objects.isNull(timingTaskDto.getId())) { |
| | | timingTask.setRegistrationDate(LocalDate.now()); |
| | |
| | | // 计ç®é¦æ¬¡æ§è¡æ¶é´ |
| | | LocalDateTime firstExecutionTime = calculateFirstExecutionTime(timingTask); |
| | | timingTask.setNextExecutionTime(firstExecutionTime); |
| | | |
| | | int result = timingTaskMapper.insert(timingTask); |
| | | if (result > 0) { |
| | | // æ°å¢æååæ·»å å°è°åº¦å¨ |
| | |
| | | } |
| | | return result; |
| | | } else { |
| | | |
| | | |
| | | int result = timingTaskMapper.updateById(timingTask); |
| | | if (result > 0) { |
| | | // æ´æ°æååéæ°è°åº¦ä»»å¡ |
| | |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; |
| | | import com.ruoyi.measuringinstrumentledger.service.MeasuringInstrumentLedgerRecordService; |
| | | import io.jsonwebtoken.lang.Collections; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author :yys |
| | |
| | | return AjaxResult.error(); |
| | | } |
| | | |
| | | @DeleteMapping("/delete") |
| | | @ApiOperation("计éå¨å
·å°è´¦è®°å½-å é¤") |
| | | @Log(title = "计éå¨å
·å°è´¦è®°å½-å é¤", businessType = BusinessType.DELETE) |
| | | public AjaxResult delete(@RequestBody List<Long> ids) { |
| | | if(Collections.isEmpty(ids)) return AjaxResult.error("è¯·éæ©è¦å é¤çæ°æ®"); |
| | | return AjaxResult.success(measuringInstrumentLedgerRecordService.removeBatchByIds(ids)); |
| | | } |
| | | |
| | | /** |
| | | * 导åºè®¡éå¨å
·å°è´¦ |
| | | */ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.procurementrecord.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.controller.BaseController; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.procurementrecord.dto.*; |
| | | import com.ruoyi.procurementrecord.mapper.ProcurementExceptionRecordMapper; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementExceptionRecord; |
| | | import com.ruoyi.procurementrecord.service.ProcurementRecordService; |
| | | 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.List; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/7/7 14:32 |
| | | */ |
| | | @RestController |
| | | @Api(tags = "éè´å¼å¸¸è®°å½") |
| | | @RequestMapping("/procurementExceptionRecord") |
| | | public class ProcurementExceptionRecordController extends BaseController { |
| | | |
| | | |
| | | @Autowired |
| | | private ProcurementExceptionRecordMapper procurementExceptionRecordMapper; |
| | | |
| | | @PostMapping("/add") |
| | | @Transactional |
| | | public AjaxResult add(@RequestBody ProcurementExceptionRecord procurementExceptionRecord) { |
| | | return AjaxResult.success(procurementExceptionRecordMapper.insert(procurementExceptionRecord)); |
| | | } |
| | | |
| | | @PostMapping("/update") |
| | | @Transactional |
| | | public AjaxResult updatePro(@RequestBody ProcurementExceptionRecord procurementExceptionRecord) { |
| | | return AjaxResult.success(procurementExceptionRecordMapper.updateById(procurementExceptionRecord)); |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | |
| | | private ProcurementRecordService procurementRecordService; |
| | | |
| | | |
| | | /** |
| | | * éè¿éå®äº§åidè·åå
¥åºæ°é |
| | | * @param salesProductId |
| | | * @return |
| | | */ |
| | | @GetMapping("/getProcurementAmount") |
| | | @ApiOperation(value = "éè¿éå®äº§åidè·åå
¥åºæ°é") |
| | | public AjaxResult getProcurementAmount(@RequestParam("salesProductId") Long salesProductId) { |
| | | return AjaxResult.success(procurementRecordService.getProcurementAmount(salesProductId)); |
| | | } |
| | | |
| | | |
| | | @GetMapping("/productlist") |
| | | @Log(title = "éè´å
¥åº-å
¥åºç®¡ç-æ°å¢å
¥åºæ¥è¯¢", businessType = BusinessType.OTHER) |
| | | public AjaxResult list(ProcurementDto procurementDto) { |
| | |
| | | return procurementRecordService.updateCustom(customStorage); |
| | | } |
| | | |
| | | @DeleteMapping("/deleteCustom") |
| | | @Delete("/delteCustom") |
| | | @Log(title = "èªå®ä¹å
¥åº-å
¥åºç®¡ç-å é¤å
¥åº", businessType = BusinessType.DELETE) |
| | | @Transactional |
| | | public AjaxResult deleteCustom(@RequestBody List<Long> ids) { |
| | |
| | | return AjaxResult.success(procurementRecordService.updateManagement(procurementDto)); |
| | | } |
| | | |
| | | @PostMapping("/updateManagementByCustom") |
| | | @Log(title = "èªå®ä¹å
¥åº-åºåå°è´¦-ä¿®æ¹", businessType = BusinessType.UPDATE) |
| | | @Transactional |
| | | public AjaxResult updateManagementByCustom(@RequestBody ProcurementManagementUpdateDto procurementDto) { |
| | | return AjaxResult.success(procurementRecordService.updateManagementByCustom(procurementDto)); |
| | | } |
| | | |
| | | |
| | | @GetMapping("/detailManagementByCustom") |
| | | @ApiOperation(value = "èªå®ä¹å
¥åº-详æ
") |
| | |
| | | IPage<ProcurementPageDto> result = procurementRecordService.listPage(page, procurementDto); |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| | | @GetMapping("/listReport") |
| | | @ApiOperation(value = "æ¥è¯¢åºåå¾è¡¨æ°æ®") |
| | | public AjaxResult listReport() { |
| | | return AjaxResult.success(procurementRecordService.getReportList()); |
| | | } |
| | | @GetMapping("/listPageByProduction") |
| | | @Log(title = "ç产å
¥åº-å
¥åºç®¡ç-å
¥åºæ¥è¯¢", businessType = BusinessType.OTHER) |
| | | @ApiOperation(value = "å
¥åºæ¥è¯¢") |
| | | public AjaxResult listPageByProduction(Page page, ProcurementPageDto procurementDto) { |
| | | IPage<ProcurementPageDto> result = procurementRecordService.listPageByProduction(page, procurementDto); |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| | | @GetMapping("/listPageByProductProduction") |
| | | @Log(title = "ç产å
¥åº-å
¥åºç®¡ç-ç产å
¥åºæ¥è¯¢", businessType = BusinessType.OTHER) |
| | | @ApiOperation(value = "å
¥åºæ¥è¯¢") |
| | | public AjaxResult listPageByProductProduction(Page page, ProcurementPageDto procurementDto) { |
| | | IPage<ProcurementPageDto> result = procurementRecordService.listPageByProductProduction(page, procurementDto); |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| | |
| | | * @param response |
| | | */ |
| | | @PostMapping("/exportTwo") |
| | | public void exportTwo(HttpServletResponse response,@RequestBody List<CustomStorage> customStorage) { |
| | | if(CollectionUtils.isEmpty(customStorage)){ |
| | | customStorage = customStorageMapper.selectList(null); |
| | | } |
| | | for (CustomStorage storage : customStorage) { |
| | | // nginx å端访é®å¾ç |
| | | storage.setUrl("http://114.132.189.42:9044"+storage.getUrl()); |
| | | } |
| | | public void exportTwo(HttpServletResponse response) { |
| | | List<CustomStorage> customStorages = customStorageMapper.selectList(null); |
| | | ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class); |
| | | util.exportExcel(response, customStorage, "å
¥åºå°è´¦"); |
| | | util.exportExcel(response, customStorages, "å
¥åºå°è´¦"); |
| | | } |
| | | |
| | | /** |
| | | * å
¥åºï¼åºåºç®¡çèªå®ä¹å¯¼åºï¼ä¿åæä»¶å°æ¬å°è¿åè·¯å¾ |
| | | * @param customStorage |
| | | */ |
| | | @PostMapping("/exportTwoSave") |
| | | public AjaxResult exportTwoSave(@RequestBody List<CustomStorage> customStorage) { |
| | | if(CollectionUtils.isEmpty(customStorage)){ |
| | | customStorage = customStorageMapper.selectList(null); |
| | | } |
| | | for (CustomStorage storage : customStorage) { |
| | | // nginx å端访é®å¾ç |
| | | storage.setUrl("http://114.132.189.42:9044" + storage.getUrl()); |
| | | } |
| | | ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class); |
| | | |
| | | return util.exportExcel(customStorage,"å
¥åºå°è´¦" , "å
¥åºå°è´¦"); |
| | | @GetMapping("/listPageProductionStock") |
| | | @Log(title = "åºå管ç-æååºå", businessType = BusinessType.OTHER) |
| | | public AjaxResult listPageProductionStock(Page page) { |
| | | IPage<ProductModel> result = procurementRecordService.listPageProductionStock(page); |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| | | @GetMapping("/listPageBySemiProduct") |
| | | @Log(title = "ç产åºåº-åºåºå°è´¦-åºåºæ¥è¯¢", businessType = BusinessType.OTHER) |
| | | public AjaxResult listPageBySemiProduct(Page page, ProcurementRecordOutPageDto procurementDto) { |
| | | IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPageBySemiProduct(page, procurementDto); |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| | | @GetMapping("/listPageByCustom") |
| | | @Log(title = "èªå®ä¹åºåº-åºåºå°è´¦-åºåºæ¥è¯¢", businessType = BusinessType.OTHER) |
| | | public AjaxResult listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) { |
| | |
| | | public void exportOne(HttpServletResponse response) { |
| | | List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.listOne(); |
| | | ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class); |
| | | util.exportExcel(response, list, "éè´åºåºå°è´¦"); |
| | | util.exportExcel(response, list, "ç产åºåºå°è´¦"); |
| | | } |
| | | |
| | | /** |
| | |
| | | public void exportTwo(HttpServletResponse response) { |
| | | List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.listTwo(); |
| | | ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class); |
| | | util.exportExcel(response, list, "æååºåºå°è´¦"); |
| | | util.exportExcel(response, list, "ç产åºåºå°è´¦"); |
| | | } |
| | | |
| | | } |
| | |
| | | * ç¾å
æ¯ä»¶ |
| | | */ |
| | | private BigDecimal dollarPrice; |
| | | private Long productModelId; // åºç¡äº§åid |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.procurementrecord.dto; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * åè´§æ ¸ç®ä¿¡æ¯Dto-èµäº§æ¥è¡¨ |
| | | */ |
| | | @Data |
| | | public class InventoryInformationDto { |
| | | /** |
| | | * æ»åºåæ°é |
| | | */ |
| | | private Integer totalInventoryCount; |
| | | /** |
| | | * æ»åºåéé¢ |
| | | */ |
| | | private BigDecimal totalInventoryValue; |
| | | /** |
| | | * åºåå卿°é |
| | | */ |
| | | private Integer inventoryChangeCount; |
| | | /** |
| | | * åºååå¨éé¢ |
| | | */ |
| | | private BigDecimal inventoryChangeValue; |
| | | } |
| | |
| | | private Integer type; |
| | | |
| | | private String typeName; |
| | | private Integer purchaseLedgerId; |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | @Excel(name = "客æ·åç§°") |
| | | private String customerName; |
| | | |
| | | private String salesLedgerProductId; |
| | | private Long salesLedgerProductId; |
| | | |
| | | /** |
| | | * åºå
¥åºæ°é |
| | |
| | | */ |
| | | @Excel(name = "产å大类") |
| | | private String productCategory; |
| | | /** |
| | | * 产åid |
| | | */ |
| | | @Excel(name = "产åid") |
| | | private Long productId; |
| | | |
| | | /** |
| | | * è§æ ¼åå· |
| | |
| | | */ |
| | | private String customerName; |
| | | |
| | | private String salesLedgerProductId; |
| | | private Long salesLedgerProductId; |
| | | |
| | | |
| | | |
| | | /** |
| | | * åºå
¥åºæ°é |
| | |
| | | */ |
| | | @Excel(name = "产å大类") |
| | | private String productCategory; |
| | | /** |
| | | * 产åid |
| | | */ |
| | | @Excel(name = "产åid") |
| | | private Long productId; |
| | | |
| | | /** |
| | | * è§æ ¼åå· |
| | |
| | | */ |
| | | private Integer type; |
| | | |
| | | private Long productModelId;// åºç¡äº§åID |
| | | |
| | | } |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @author :yys |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.procurementrecord.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementExceptionRecord; |
| | | |
| | | |
| | | public interface ProcurementExceptionRecordMapper extends BaseMapper<ProcurementExceptionRecord> { |
| | | |
| | | } |
| | |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | IPage<ProcurementPageDto> listPageByProduction(Page page, @Param("req") ProcurementPageDto procurementDto); |
| | | |
| | | IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, @Param("req") ProcurementPageDto procurementDto); |
| | | |
| | | IPage<ProcurementPageDtoCopy> listPagePRS(Page page, @Param("req") ProcurementPageDto procurementDto); |
| | | |
| | | BigDecimal getSumQuantity(@Param("productModelId") Long productModelId); |
| | | |
| | | IPage<ProcurementPageDto> listPageByProductProduction(Page page, @Param("req") ProcurementPageDto procurementDto); |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto); |
| | | |
| | | IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto); |
| | | |
| | | BigDecimal getSumQuantity(@Param("productModelId") Long productModelId); |
| | | |
| | | ProcurementRecordOut selectCode(@Param("format") String format); |
| | | |
| | | IPage<ProcurementRecordOutPageDto> listPageBySemiProduct(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto); |
| | | } |
| | |
| | | @Excel(name = "å
¥åºæ¶é´", width = 30, dateFormat = "yyyy-MM-dd") |
| | | private Date inboundDate; |
| | | |
| | | /** |
| | | * ç¼å· |
| | | */ |
| | | @Excel(name = "ç¼å·") |
| | | private String code; |
| | | |
| | | @TableField(exist = false) |
| | | private String timeStr; |
| | | |
| | | /** |
| | | * å¾
åºåºæ°é |
| | | */ |
| | | @Excel(name = "å¾
åºåºæ°é") |
| | | @TableField(exist = false) |
| | | private BigDecimal inboundNum0; |
| | | /** |
| | | * åºåºæ°é |
| | | */ |
| | | @Excel(name = "åºåºæ°é") |
| | | @TableField(exist = false) |
| | | private BigDecimal totalInboundNum = BigDecimal.ZERO; |
| | | // ç©åç±»å |
| | | // @Excel(name = "ç©åç±»å") |
| | | @Excel(name = "ç©åç±»å") |
| | | private String itemType; |
| | | // å
¥åºæ¹æ¬¡ |
| | | // @Excel(name = "å
¥åºæ¹æ¬¡") |
| | | @Excel(name = "å
¥åºæ¹æ¬¡") |
| | | private String inboundBatches; |
| | | // å
¥åºæ°é |
| | | @Excel(name = "å
¥åºæ°é") |
| | | private BigDecimal inboundNum; |
| | | // ä¾åºååç§° |
| | | // @Excel(name = "ä¾åºååç§°") |
| | | @Excel(name = "ä¾åºååç§°") |
| | | private String supplierName; |
| | | // 产å大类 |
| | | @Excel(name = "产ååç§°") |
| | | @Excel(name = "产å大类") |
| | | private String productCategory; |
| | | // è§æ ¼åå· |
| | | @Excel(name = "产åé«åº¦") |
| | | @Excel(name = "è§æ ¼åå·") |
| | | private String specificationModel; |
| | | // åä½ |
| | | // @Excel(name = "åä½") |
| | | @Excel(name = "åä½") |
| | | private String unit; |
| | | // å«ç¨åä»· |
| | | @Excel(name = "åä»·(å
)/ä»¶") |
| | | @Excel(name = "å«ç¨åä»·") |
| | | private BigDecimal taxInclusiveUnitPrice; |
| | | // å«ç¨æ»ä»· |
| | | // @Excel(name = "å«ç¨æ»ä»·") |
| | | @Excel(name = "å«ç¨æ»ä»·") |
| | | private BigDecimal taxInclusiveTotalPrice; |
| | | // ç¨ç(%) |
| | | // @Excel(name = "ç¨ç(%)") |
| | | @Excel(name = "ç¨ç(%)") |
| | | private BigDecimal taxRate; |
| | | // ä¸å«ç¨æ»ä»· |
| | | // @Excel(name = "ä¸å«ç¨æ»ä»·") |
| | | @Excel(name = "ä¸å«ç¨æ»ä»·") |
| | | private BigDecimal taxExclusiveTotalPrice; |
| | | /** |
| | | * å
¥åºç¨æ· |
| | |
| | | * å
¥åºæ¶é´ |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | // @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | // @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDateTime createTime; |
| | | |
| | | /** |
| | |
| | | * ä¿®æ¹æ¶é´ |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | // @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime updateTime; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Excel(name = "åä»·(ç¾å
)/ä»¶") |
| | | private BigDecimal dollarPrice; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.procurementrecord.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @TableName("procurement_exception_record") |
| | | @Data |
| | | @Builder |
| | | public class ProcurementExceptionRecord { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | /** |
| | | * éè´å°è´¦id |
| | | */ |
| | | private Integer purchaseLedgerId; |
| | | /** |
| | | * å¼å¸¸æè¿° |
| | | */ |
| | | private String exceptionReason; |
| | | |
| | | /** |
| | | * å¼å¸¸æ°é |
| | | */ |
| | | private BigDecimal exceptionNum; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private LocalDateTime createTime; |
| | | |
| | | /** |
| | | * ä¿®æ¹è
|
| | | */ |
| | | private Long updateUser; |
| | | |
| | | /** |
| | | * ä¿®æ¹æ¶é´ |
| | | */ |
| | | private LocalDateTime updateTime; |
| | | |
| | | /** |
| | | * ç§æ·ID |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | } |
| | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | /** |
| | | * 产åID |
| | | */ |
| | | private Long productModelId; |
| | | |
| | | } |
| | |
| | | private Long tenantId; |
| | | |
| | | /** |
| | | * 产åID |
| | | */ |
| | | private Long productModelId; |
| | | |
| | | /** |
| | | * æ¯ç®±æ°é |
| | | */ |
| | | private Integer boxNum; |
| | |
| | | IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto); |
| | | |
| | | IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto); |
| | | |
| | | IPage<ProcurementRecordOutPageDto> listPageBySemiProduct(Page page, ProcurementRecordOutPageDto procurementDto); |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.procurementrecord.dto.*; |
| | | import com.ruoyi.procurementrecord.pojo.CustomStorage; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | int updateManagementByCustom(ProcurementManagementUpdateDto procurementDto); |
| | | |
| | | CustomStorage detailManagementByCustom(ProcurementManagementUpdateDto procurementDto); |
| | | BigDecimal getProcurementAmount(Long salesProductId); |
| | | InventoryInformationDto getReportList(); |
| | | |
| | | ProcurementPageDto detail(ProcurementUpdateDto procurementDto); |
| | | IPage<ProductModel> listPageProductionStock(Page page); |
| | | |
| | | IPage<ProcurementPageDto> listPageByProductProduction(Page page, ProcurementPageDto procurementDto); |
| | | } |
| | |
| | | import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto; |
| | | import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; |
| | | import com.ruoyi.procurementrecord.service.ProcurementRecordOutService; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.text.DateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | |
| | | Long aLong = procurementRecordOutMapper.selectCount(procurementRecordLambdaQueryWrapper); |
| | | ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder() |
| | | .procurementRecordStorageId(procurementRecordOutAdd.getId()) |
| | | .code("LS" + dateFormat.format(now) + String.format("%03d", aLong1 + 1)) |
| | | .code("SC" + dateFormat.format(now) + String.format("%03d", aLong1 + 1)) |
| | | .salesLedgerProductId(procurementRecordOutAdd.getSalesLedgerProductId()) |
| | | .inboundBatches(aLong.equals(0L) ? "第1æ¹æ¬¡" : "第"+ (aLong + 1) + "æ¹æ¬¡") |
| | | .inboundNum(new BigDecimal(procurementRecordOutAdd.getQuantity())) |
| | |
| | | .createUser(Long.valueOf(procurementRecordOutAdd.getUserId())) |
| | | .createBy(sysUser.getNickName()) |
| | | .updateUser(Long.valueOf(procurementRecordOutAdd.getUserId())) |
| | | .updateTime(LocalDateTime.now()); |
| | | .updateTime(LocalDateTime.now()) |
| | | .productModelId(procurementRecordOutAdd.getProductModelId()); |
| | | this.save(procurementRecordOut.build()); |
| | | return 0; |
| | | } |
| | |
| | | public IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) { |
| | | return procurementRecordOutMapper.listPageByCustom(page, procurementDto); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ProcurementRecordOutPageDto> listPageBySemiProduct(Page page, ProcurementRecordOutPageDto procurementDto) { |
| | | return procurementRecordOutMapper.listPageBySemiProduct(page, procurementDto); |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.mapper.ProductModelMapper; |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | import com.ruoyi.common.utils.OrderUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.security.LoginUser; |
| | |
| | | import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper; |
| | | import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; |
| | | import com.ruoyi.procurementrecord.pojo.CustomStorage; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; |
| | | import com.ruoyi.procurementrecord.service.ProcurementRecordService; |
| | | import com.ruoyi.procurementrecord.utils.StockUtils; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | |
| | | private final ProcurementRecordOutMapper procurementRecordOutMapper; |
| | | |
| | | private final SalesLedgerProductMapper salesLedgerProductMapper; |
| | | private final StockUtils stockUtils; |
| | | private final ProductModelMapper productModelMapper; |
| | | |
| | | @Override |
| | | public List<ProcurementDto> listProcurementBySalesLedgerId(ProcurementDto procurementDto) { |
| | |
| | | @Override |
| | | public void exportCopyTwo(HttpServletResponse response,Integer type) { |
| | | LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | customStorageLambdaQueryWrapper.groupBy(CustomStorage::getProductCategory, CustomStorage::getSpecificationModel); |
| | | customStorageLambdaQueryWrapper.groupBy(CustomStorage::getSupplierName, CustomStorage::getProductCategory, CustomStorage::getSpecificationModel); |
| | | List<CustomStorage> list = customStorageMapper.selectList(customStorageLambdaQueryWrapper); |
| | | // 计ç®å¾
å
¥åºæ°é |
| | | // æ¥è¯¢éè´è®°å½å·²å
¥åºæ°é |
| | |
| | | } |
| | | LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); |
| | | procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type); |
| | | procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type); |
| | | List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); |
| | | if(CollectionUtils.isEmpty( procurementRecords)){ |
| | |
| | | } |
| | | |
| | | @Override |
| | | public InventoryInformationDto getReportList() { |
| | | InventoryInformationDto inventoryInformationDto = new InventoryInformationDto(); |
| | | IPage<ProcurementPageDto> procurementPageDtoIPage = this.listPage(new Page<>(1, -1), new ProcurementPageDto()); |
| | | if(CollectionUtils.isEmpty(procurementPageDtoIPage.getRecords())){ |
| | | return inventoryInformationDto; |
| | | } |
| | | // è®¡ç®æ»åºåæ°é |
| | | inventoryInformationDto.setTotalInventoryCount(procurementPageDtoIPage.getRecords().stream() |
| | | .map(ProcurementPageDto::getInboundNum0) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add) |
| | | .intValue()); |
| | | // è®¡ç®æ»åºåéé¢-ProcurementPageDtoéæ¯ä¸ªå¯¹è±¡çinboundNum0å¼åtaxInclusiveUnitPriceçä¹ç§¯ï¼ä¹åç¸å å¾å°æ»åºåéé¢ |
| | | BigDecimal totalInventoryValue = procurementPageDtoIPage.getRecords().stream() |
| | | // è¿æ»¤ç©ºå¯¹è±¡ï¼é¿å
NPE |
| | | .filter(Objects::nonNull) |
| | | // å¤çæ¯ä¸ªå¯¹è±¡ç空å¼ï¼null转为0 |
| | | .map(dto -> { |
| | | // å
¥åºæ°éï¼null â 0 |
| | | BigDecimal inboundNum0 = Optional.ofNullable(dto.getInboundNum0()).orElse(BigDecimal.ZERO); |
| | | // å«ç¨åä»·ï¼null â 0 |
| | | BigDecimal taxInclusiveUnitPrice = Optional.ofNullable(dto.getTaxInclusiveUnitPrice()).orElse(BigDecimal.ZERO); |
| | | // 计ç®å个对象çåºåéé¢ï¼æ°é à å«ç¨åä»· |
| | | return inboundNum0.multiply(taxInclusiveUnitPrice); |
| | | }) |
| | | // ææå个é颿±åï¼åå§å¼ä¸º0 |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // 设置æ»åºåéé¢ |
| | | inventoryInformationDto.setTotalInventoryValue(totalInventoryValue); |
| | | // 计ç®åºåå卿°é-ProcurementPageDtoéæ¯ä¸ªå¯¹è±¡çinboundNumå¼åinboundNum0å¼çå·®å¼ï¼ä¹åç¸å å¾å°åºåå卿°é |
| | | inventoryInformationDto.setInventoryChangeCount(procurementPageDtoIPage.getRecords().stream() |
| | | // è¿æ»¤ç©ºå¯¹è±¡ï¼é¿å
NPE |
| | | .filter(Objects::nonNull) |
| | | // å¤çæ¯ä¸ªå¯¹è±¡ç空å¼ï¼null转为0 |
| | | .map(dto -> { |
| | | // å
¥åºæ°éï¼null â 0 |
| | | BigDecimal inboundNum = Optional.ofNullable(dto.getInboundNum()).orElse(BigDecimal.ZERO); |
| | | // å¾
åºåºæ°éï¼null â 0 |
| | | BigDecimal inboundNum0 = Optional.ofNullable(dto.getInboundNum0()).orElse(BigDecimal.ZERO); |
| | | // 计ç®å个对象çåºåå卿°éï¼æ°é - å¾
åºåºæ°é |
| | | return inboundNum.subtract(inboundNum0); |
| | | }) |
| | | // ææå个å卿°éæ±åï¼åå§å¼ä¸º0 |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add) |
| | | .intValue()); |
| | | // 计ç®åºååå¨éé¢ProcurementPageDtoéæ¯ä¸ªå¯¹è±¡çtaxInclusiveTotalPriceå¼çå |
| | | BigDecimal inventoryChangeValue = procurementPageDtoIPage.getRecords().stream() |
| | | // è¿æ»¤ç©ºå¯¹è±¡ï¼é¿å
NPE |
| | | .filter(Objects::nonNull) |
| | | // å¤çæ¯ä¸ªå¯¹è±¡ç空å¼ï¼null转为0 |
| | | .map(dto -> { |
| | | // å«ç¨æ»ä»·ï¼null â 0 |
| | | BigDecimal taxInclusiveTotalPrice = Optional.ofNullable(dto.getTaxInclusiveTotalPrice()).orElse(BigDecimal.ZERO); |
| | | // 计ç®å个对象çå
¥åºåºåéé¢ï¼å«ç¨æ»ä»· |
| | | return taxInclusiveTotalPrice; |
| | | }) |
| | | // ææå个åå¨é颿±åï¼åå§å¼ä¸º0 |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // 设置åºååå¨éé¢ |
| | | inventoryInformationDto.setInventoryChangeValue(inventoryChangeValue.subtract(totalInventoryValue)); |
| | | return inventoryInformationDto; |
| | | } |
| | | @Override |
| | | public IPage<ProcurementPageDto> listPageByProduction(Page page, ProcurementPageDto procurementDto) { |
| | | IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPageByProduction(page, procurementDto); |
| | | List<ProcurementPageDto> procurementPageDtos = procurementPageDtoIPage.getRecords(); |
| | |
| | | Long aLong = customStorageMapper.selectCount(null); |
| | | item.setInboundBatches(aLong.equals(0L) ? "第1æ¹æ¬¡(èªå®ä¹å
¥åº)" : "第"+ (aLong + 1) + "æ¹æ¬¡(èªå®ä¹å
¥åº)" ); |
| | | item.setCreateBy(loginUser.getNickName()); |
| | | item.setCode(OrderUtils.countTodayByCreateTime(customStorageMapper, "")); |
| | | customStorageMapper.insert(item); |
| | | }); |
| | | return AjaxResult.success("èªå®ä¹å
¥åºæå"); |
| | |
| | | |
| | | @Override |
| | | public IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, ProcurementPageDto procurementDto) { |
| | | IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopyByProduction(page, procurementDto); |
| | | IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPagePRS(page, procurementDto); |
| | | List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords(); |
| | | // 计ç®å¾
å
¥åºæ°é |
| | | // æ¥è¯¢éè´è®°å½å·²å
¥åºæ°é |
| | | List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList()); |
| | | if(CollectionUtils.isEmpty( collect)){ |
| | | return procurementPageDtoCopyIPage; |
| | | } |
| | | // 1. æ¥è¯¢éè´è®°å½å·²å
¥åºçåºåºè®°å½ï¼æstorageIdåç»ï¼ |
| | | LambdaQueryWrapper<ProcurementRecordOut> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); |
| | | List<ProcurementRecordOut> recordOutList = procurementRecordOutMapper.selectList(queryWrapper); |
| | | |
| | | // 2. æSalesLedgerProductIdåç»ï¼ç»è®¡æ¯ä¸ªid对åºçå·²åºåºæ°éæ»å-å·²åºåºæ°é |
| | | Map<Integer, BigDecimal> storageIdToTotalOutNumMap = recordOutList.stream() |
| | | .collect(Collectors.groupingBy( |
| | | ProcurementRecordOut::getSalesLedgerProductId, |
| | | Collectors.reducing( |
| | | BigDecimal.ZERO, |
| | | ProcurementRecordOut::getInboundNum, |
| | | (a, b) -> a.add(b == null ? BigDecimal.ZERO : b) |
| | | ) |
| | | )); |
| | | // 2. procurementPageDtoCopyListæSalesLedgerProductIdåç»ï¼ç»è®¡æ¯ä¸ªid对åºçå·²åºåºæ°éæ»å-å
¥åºåºæ°é |
| | | Map<Long, BigDecimal> storageIdToTotalintNumMap = procurementPageDtoCopyList.stream() |
| | | .collect(Collectors.groupingBy( |
| | | ProcurementPageDtoCopy::getSalesLedgerProductId, |
| | | Collectors.reducing( |
| | | BigDecimal.ZERO, |
| | | ProcurementPageDtoCopy::getInboundNum, |
| | | (a, b) -> a.add(b == null ? BigDecimal.ZERO : b) |
| | | ) |
| | | )); |
| | | // 3. 循ç¯ç»dtoèµå¼ |
| | | for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) { |
| | | List<Long> longs = listCopyIds(dto.getIds()); |
| | | LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, longs); |
| | | procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 2); |
| | | List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); |
| | | if(CollectionUtils.isEmpty(procurementRecords)){ |
| | | dto.setInboundNum0(dto.getInboundNum()); |
| | | dto.setTotalInboundNum(BigDecimal.ZERO); |
| | | return procurementPageDtoCopyIPage; |
| | | } |
| | | |
| | | // 计ç®å·²åºåºæ°éæ»åï¼å¹¶è®¾ç½®å¾
åºåºæ°é |
| | | BigDecimal totalInboundNum = procurementRecords.stream() |
| | | .map(ProcurementRecordOut::getInboundNum) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // åºåºæ°é = æ»æ°é - å¾
åºåºæ°é |
| | | Integer storageId = dto.getId(); |
| | | Integer salesLedgerProductId = Integer.valueOf(Math.toIntExact(dto.getSalesLedgerProductId())); |
| | | // è·åå½åsalesLedgerProductId对åºçå·²åºåºæ»æ°ï¼é»è®¤0ï¼ |
| | | BigDecimal totalInboundNum = storageIdToTotalOutNumMap.getOrDefault(salesLedgerProductId, BigDecimal.ZERO); |
| | | // å·²åºåºæ°é |
| | | dto.setTotalInboundNum(totalInboundNum); |
| | | // å¾
åºåºæ°é = æ»æ°é - å·²åºåºæ°é |
| | | dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); |
| | | // åºåä»·å¼ |
| | | if(dto.getUnitPrice() != null){ |
| | | dto.setTotalPrice(dto.getTotalInboundNum().multiply(dto.getUnitPrice())); |
| | | } |
| | | // å¾
åºåºæ°é = æ»æ°é - å·²åºåºæ°éï¼æ»æ°é空å¼åé»è®¤0ï¼ |
| | | // BigDecimal totalNum = dto.getInboundNum() == null ? BigDecimal.ZERO : dto.getInboundNum(); |
| | | BigDecimal totalNum = storageIdToTotalintNumMap.getOrDefault(salesLedgerProductId, BigDecimal.ZERO); |
| | | dto.setInboundNum(totalNum); |
| | | dto.setInboundNum0(totalNum.subtract(totalInboundNum)); |
| | | |
| | | // åºåä»·å¼ = å·²åºåºæ°é * åä»·ï¼å价空å¼åé»è®¤0ï¼ |
| | | BigDecimal unitPrice = dto.getUnitPrice() == null ? BigDecimal.ZERO : dto.getUnitPrice(); |
| | | dto.setTotalPrice(totalInboundNum.multiply(unitPrice)); |
| | | } |
| | | return procurementPageDtoCopyIPage; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<CustomStorage> listPageCopyByCustom(Page page, CustomStorage customStorage) { |
| | | // LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | // customStorageLambdaQueryWrapper.groupBy(CustomStorage::getProductCategory, CustomStorage::getSpecificationModel,CustomStorage::getTaxInclusiveUnitPrice); |
| | | // if(customStorage != null){ |
| | | // if(!StringUtils.isEmpty(customStorage.getSupplierName())){ |
| | | // customStorageLambdaQueryWrapper.like(CustomStorage::getSupplierName, customStorage.getSupplierName()); |
| | | // } |
| | | // // çéå
¥åºæ¶é´ |
| | | // if(customStorage.getInboundDate() != null){ |
| | | // customStorageLambdaQueryWrapper.eq(CustomStorage::getInboundDate, customStorage.getInboundDate()); |
| | | // } |
| | | // if(!StringUtils.isEmpty(customStorage.getProductCategory())){ |
| | | // customStorageLambdaQueryWrapper.like(CustomStorage::getProductCategory, customStorage.getProductCategory()); |
| | | // } |
| | | // } |
| | | // customStorageLambdaQueryWrapper.orderByDesc(CustomStorage::getInboundDate); |
| | | IPage<CustomStorage> pageList = customStorageMapper.listPageCopyByCustom(page, customStorage); |
| | | List<CustomStorage> procurementPageDtoCopyList = pageList.getRecords(); |
| | | |
| | | List<CustomStorage> procurementPageDtoCopyList = pageList.getRecords(); |
| | | // 计ç®å¾
å
¥åºæ°é |
| | | // æ¥è¯¢éè´è®°å½å·²å
¥åºæ°é |
| | | List<Integer> collect = procurementPageDtoCopyList.stream().map(CustomStorage::getId).collect(Collectors.toList()); |
| | | if(CollectionUtils.isEmpty( collect)){ |
| | | return pageList; |
| | | } |
| | | LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); |
| | | procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 3); |
| | | List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); |
| | | if(CollectionUtils.isEmpty( procurementRecords)){ |
| | | return pageList; |
| | | } |
| | | for (CustomStorage dto : procurementPageDtoCopyList) { |
| | | // æ ¹æ®éè´å°è´¦IDçé对åºçåºåºè®°å½ |
| | | List<Long> longs = listCopyIds(dto.getIds()); |
| | | LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, longs); |
| | | procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 3); |
| | | List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); |
| | | if(CollectionUtils.isEmpty(procurementRecords)){ |
| | | List<ProcurementRecordOut> collect1 = procurementRecords.stream() |
| | | .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // å¦ææ²¡æç¸å
³çåºåºè®°å½ï¼è·³è¿è¯¥æ¡æ°æ® |
| | | if(CollectionUtils.isEmpty(collect1)){ |
| | | dto.setInboundNum0(dto.getInboundNum()); |
| | | dto.setTotalInboundNum(BigDecimal.ZERO); |
| | | return pageList; |
| | | continue; |
| | | } |
| | | |
| | | // 计ç®å·²åºåºæ°éæ»åï¼å¹¶è®¾ç½®å¾
åºåºæ°é |
| | | BigDecimal totalInboundNum = procurementRecords.stream() |
| | | BigDecimal totalInboundNum = collect1.stream() |
| | | .map(ProcurementRecordOut::getInboundNum) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // åºåºæ°é = æ»æ°é - å¾
åºåºæ°é |
| | |
| | | } |
| | | |
| | | @Override |
| | | public CustomStorage detailManagementByCustom(ProcurementManagementUpdateDto procurementDto) { |
| | | if(procurementDto == null) return null; |
| | | return customStorageMapper.selectById(procurementDto.getId()); |
| | | } |
| | | |
| | | @Override |
| | | public ProcurementPageDto detail(ProcurementUpdateDto procurementDto) { |
| | | ProcurementPageDto procurementPageDto = new ProcurementPageDto(); |
| | | if(procurementDto == null) return procurementPageDto; |
| | | ProcurementRecordStorage procurementRecordStorage = procurementRecordMapper.selectById(procurementDto.getId()); |
| | | if(procurementRecordStorage == null) return procurementPageDto; |
| | | BeanUtils.copyProperties(procurementRecordStorage, procurementPageDto); |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(procurementRecordStorage.getSalesLedgerProductId()); |
| | | if(salesLedgerProduct != null){ |
| | | procurementPageDto.setProductCategory(salesLedgerProduct.getProductCategory()); |
| | | procurementPageDto.setSpecificationModel(salesLedgerProduct.getSpecificationModel()); |
| | | procurementPageDto.setUnit(salesLedgerProduct.getUnit()); |
| | | procurementPageDto.setTaxInclusiveUnitPrice(salesLedgerProduct.getTaxInclusiveUnitPrice()); |
| | | public BigDecimal getProcurementAmount(Long salesProductId) { |
| | | LambdaQueryWrapper<ProcurementRecordStorage> procurementRecordStorageLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | procurementRecordStorageLambdaQueryWrapper.eq(ProcurementRecordStorage::getSalesLedgerProductId, salesProductId) |
| | | .eq(ProcurementRecordStorage::getType, 2); |
| | | List<ProcurementRecordStorage> procurementRecordStorages = procurementRecordMapper.selectList(procurementRecordStorageLambdaQueryWrapper); |
| | | if(CollectionUtils.isEmpty( procurementRecordStorages)){ |
| | | return BigDecimal.ZERO; |
| | | } |
| | | return procurementPageDto; |
| | | return procurementRecordStorages.stream() |
| | | .map(ProcurementRecordStorage::getInboundNum) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } |
| | | |
| | | @Override |
| | |
| | | .cartonSpecifications(detail.getCartonSpecifications()) |
| | | .dollarPrice(detail.getDollarPrice()) |
| | | .updateUser(loginUser.getUserId()) |
| | | .createBy(procurementDto.getNickName()); |
| | | .createBy(procurementDto.getNickName()) |
| | | .productModelId(detail.getProductModelId()); |
| | | this.save(procurementRecordBuilder.build()); |
| | | // å
¥åºæååæéè´æ°é |
| | | // LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | // salesLedgerProductLambdaQueryWrapper.eq(SalesLedgerProduct::getId, detail.getId()); |
| | | // SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectOne(salesLedgerProductLambdaQueryWrapper); |
| | | // if(salesLedgerProduct == null){ |
| | | // throw new RuntimeException("æªæ¾å°è¯¥åå"); |
| | | // } |
| | | // salesLedgerProduct.setQuantity(salesLedgerProduct.getQuantity().subtract(detail.getInboundQuantity())); |
| | | // salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | } |
| | | return 1; |
| | | } |
| | |
| | | public IPage<ProcurementPageDtoCopy> listPageCopy(Page page, ProcurementPageDto procurementDto) { |
| | | IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopy(page, procurementDto); |
| | | List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords(); |
| | | // 计ç®å¾
å
¥åºæ°é |
| | | // æ¥è¯¢éè´è®°å½å·²å
¥åºæ°é |
| | | List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList()); |
| | | if(CollectionUtils.isEmpty( collect)){ |
| | | return procurementPageDtoCopyIPage; |
| | | } |
| | | LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); |
| | | procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType,1); |
| | | List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); |
| | | if(CollectionUtils.isEmpty( procurementRecords)){ |
| | | return procurementPageDtoCopyIPage; |
| | | } |
| | | for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) { |
| | | List<Long> longs = listCopyIds(dto.getIds()); |
| | | LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, longs); |
| | | procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType,1); |
| | | List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); |
| | | if(CollectionUtils.isEmpty(procurementRecords)){ |
| | | // æ ¹æ®éè´å°è´¦IDçé对åºçåºåºè®°å½ |
| | | List<ProcurementRecordOut> collect1 = procurementRecords.stream() |
| | | .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()) && ProcurementRecordOut.getType().equals(1)) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // å¦ææ²¡æç¸å
³çåºåºè®°å½ï¼è·³è¿è¯¥æ¡æ°æ® |
| | | if(CollectionUtils.isEmpty(collect1)){ |
| | | dto.setInboundNum0(dto.getInboundNum()); |
| | | dto.setTotalInboundNum(BigDecimal.ZERO); |
| | | return procurementPageDtoCopyIPage; |
| | | continue; |
| | | } |
| | | // 计ç®å·²åºåºæ°éæ»åï¼å¹¶è®¾ç½®å¾
åºåºæ°é |
| | | BigDecimal totalInboundNum = procurementRecords.stream() |
| | |
| | | } |
| | | return procurementPageDtoCopyIPage; |
| | | } |
| | | @Override |
| | | public IPage<ProductModel> listPageProductionStock(Page page) { |
| | | ProductModel productModel = new ProductModel(); |
| | | IPage<ProductModel> iPage = productModelMapper.listPageProductModel(page, productModel); |
| | | iPage.getRecords().forEach(item -> { |
| | | item.setInboundNum(stockUtils.getStockQuantity(item.getId()).get("inboundNum")); |
| | | item.setOutboundNum(stockUtils.getStockQuantity(item.getId()).get("outboundNum")); |
| | | item.setStockQuantity(stockUtils.getStockQuantity(item.getId()).get("stockQuantity")); |
| | | }); |
| | | return iPage; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ProcurementPageDto> listPageByProductProduction(Page page, ProcurementPageDto procurementDto) { |
| | | IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPageByProductProduction(page, procurementDto); |
| | | return procurementPageDtoIPage; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.procurementrecord.utils; |
| | | |
| | | import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper; |
| | | import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | @Component |
| | | @RequiredArgsConstructor |
| | | public class StockUtils { |
| | | private final ProcurementRecordOutMapper procurementRecordOutMapper; |
| | | private final ProcurementRecordMapper procurementRecordMapper; |
| | | |
| | | // è·åååå
¥åºæ°é,åºåºæ°é,å©ä½åºå |
| | | public Map<String, BigDecimal> getStockQuantity(Long productModelId) { |
| | | // å
¥åºæ°é |
| | | BigDecimal sumQuantity = procurementRecordMapper.getSumQuantity(productModelId); |
| | | // åºåºæ°é |
| | | BigDecimal outQuantity = procurementRecordOutMapper.getSumQuantity(productModelId); |
| | | // å©ä½åºå |
| | | BigDecimal stockQuantity = outQuantity.compareTo(sumQuantity) > 0 ? BigDecimal.ZERO : sumQuantity.subtract(outQuantity); |
| | | Map<String, BigDecimal> stockMap = new HashMap<>(); |
| | | stockMap.put("inboundNum", sumQuantity); |
| | | stockMap.put("outboundNum", outQuantity); |
| | | stockMap.put("stockQuantity", stockQuantity); |
| | | return stockMap; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProcessRouteDto; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import com.ruoyi.production.pojo.ProcessRouteItem; |
| | | import com.ruoyi.production.service.ProcessRouteItemService; |
| | | import com.ruoyi.production.service.ProcessRouteService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Arrays; |
| | | |
| | | @RestController |
| | | @RequestMapping("processRoute") |
| | | @Api(tags = "å·¥èºè·¯çº¿") |
| | | public class ProcessRouteController { |
| | | |
| | | @Autowired |
| | | private ProcessRouteService processRouteService; |
| | | |
| | | @Autowired |
| | | private ProcessRouteItemService processRouteItemService; |
| | | |
| | | @GetMapping("page") |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | public R page(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) { |
| | | return R.ok(processRouteService.pageProcessRouteDto(page, processRouteDto)); |
| | | } |
| | | |
| | | @ApiOperation("æ°å¢å·¥èºè·¯çº¿") |
| | | @PostMapping () |
| | | public R add(@RequestBody ProcessRoute processRoute) { |
| | | return R.ok(processRouteService.saveProcessRoute(processRoute)); |
| | | } |
| | | @ApiOperation("ä¿®æ¹å·¥èºè·¯çº¿") |
| | | @PutMapping () |
| | | public R update(@RequestBody ProcessRoute processRoute) { |
| | | return R.ok(processRouteService.updateById(processRoute)); |
| | | } |
| | | @ApiOperation("å é¤å·¥èºè·¯çº¿") |
| | | @DeleteMapping("/{ids}") |
| | | public R delete(@PathVariable("ids") Long[] ids) { |
| | | //å é¤å·¥èºè·¯çº¿è¯¦æ
|
| | | processRouteItemService.remove(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId,Arrays.asList(ids))); |
| | | return R.ok(processRouteService.removeBatchByIds(Arrays.asList(ids))); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProcessRouteItemDto; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import com.ruoyi.production.pojo.ProcessRouteItem; |
| | | import com.ruoyi.production.service.ProcessRouteItemService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | @RestController |
| | | @RequestMapping("processRouteItem") |
| | | @Api(tags = "å·¥èºè·¯çº¿æç»") |
| | | public class ProcessRouteItemController { |
| | | @Autowired |
| | | private ProcessRouteItemService processRouteItemService; |
| | | |
| | | @GetMapping("list") |
| | | public R listProcessRouteItemDto(ProcessRouteItemDto processRouteItemDto) { |
| | | return R.ok(processRouteItemService.listProcessRouteItemDto(processRouteItemDto)); |
| | | } |
| | | |
| | | @PostMapping () |
| | | @ApiOperation("æ°å¢ä¿®æ¹") |
| | | public R addOrUpdate(@RequestBody ProcessRouteItem processRouteItem) { |
| | | return R.ok(processRouteItemService.saveOrUpdate(processRouteItem)); |
| | | } |
| | | |
| | | @PostMapping ("/sort") |
| | | @ApiOperation("æåº") |
| | | public R sort(@RequestBody ProcessRouteItem processRouteItem) { |
| | | return R.ok(processRouteItemService.sort(processRouteItem)); |
| | | } |
| | | |
| | | @ApiOperation("å é¤å·¥èºè·¯çº¿æç»") |
| | | @DeleteMapping("/batchDelete/{id}") |
| | | @Log(title = "å é¤", businessType = BusinessType.DELETE) |
| | | public AjaxResult batchDelete(@PathVariable("id") Long id) { |
| | | return AjaxResult.success(processRouteItemService.batchDelete(id)); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.production.dto.ProductBomDto; |
| | | import com.ruoyi.production.dto.ProductProcessDto; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import com.ruoyi.production.pojo.ProductBom; |
| | | import com.ruoyi.production.pojo.ProductProcess; |
| | | import com.ruoyi.production.service.ProcessRouteService; |
| | | import com.ruoyi.production.service.ProductBomService; |
| | | import com.ruoyi.production.service.ProductProcessService; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * BOM主表 å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 09:59:27 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/productBom") |
| | | public class ProductBomController { |
| | | |
| | | @Autowired |
| | | private ProductBomService productBomService; |
| | | |
| | | @Autowired |
| | | private ProcessRouteService processRouteService; |
| | | |
| | | @GetMapping("/listPage") |
| | | @Log(title = "BOM-å页æ¥è¯¢", businessType = BusinessType.OTHER) |
| | | @ApiOperation("BOM-å页æ¥è¯¢") |
| | | public AjaxResult listPage(Page page, ProductBomDto productBomDto) { |
| | | IPage<ProductBomDto> listPage = productBomService.listPage(page, productBomDto); |
| | | return AjaxResult.success(listPage); |
| | | } |
| | | |
| | | @ApiModelProperty("æ°å¢BOM") |
| | | @PostMapping("/add") |
| | | @Log(title = "æ°å¢", businessType = BusinessType.INSERT) |
| | | public AjaxResult add( @RequestBody ProductBom productBom) { |
| | | return productBomService.add(productBom); |
| | | } |
| | | |
| | | @ApiOperation("æ´æ°BOM") |
| | | @Log(title = "ä¿®æ¹", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/update") |
| | | public AjaxResult update(@RequestBody ProductBom productBom) { |
| | | return AjaxResult.success(productBomService.updateById(productBom)); |
| | | } |
| | | |
| | | @ApiOperation("å é¤BOM") |
| | | @DeleteMapping("/batchDelete") |
| | | @Log(title = "å é¤", businessType = BusinessType.DELETE) |
| | | public AjaxResult batchDelete(@RequestBody List<Integer> ids) { |
| | | List<ProcessRoute> list = processRouteService.list(Wrappers.<ProcessRoute>lambdaQuery().in(ProcessRoute::getBomId, ids)); |
| | | if (list.size()>0){ |
| | | return AjaxResult.error("该BOMå·²ç»åå¨å¯¹åºçå·¥èºè·¯çº¿,æ æ³è¿è¡å é¤"); |
| | | } |
| | | if(CollectionUtils.isEmpty(ids)){ |
| | | return AjaxResult.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); |
| | | } |
| | | return AjaxResult.success(productBomService.removeBatchByIds(ids)); |
| | | } |
| | | |
| | | @GetMapping("/getByModel") |
| | | @Log(title = "BOM-æ ¹æ®éæ©çè§æ ¼åå·idæ¥è¯¢åå¨çbom", businessType = BusinessType.OTHER) |
| | | @ApiOperation("BOM-æ ¹æ®éæ©çè§æ ¼åå·idæ¥è¯¢åå¨çbom") |
| | | public AjaxResult getByModel(Long productModelId) { |
| | | List<ProductBom> productBoms = productBomService.list(Wrappers.<ProductBom>lambdaQuery().eq(ProductBom::getProductModelId, productModelId)); |
| | | return AjaxResult.success(productBoms); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.basic.pojo.Customer; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductOrderDto; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import com.ruoyi.production.pojo.ProductOrder; |
| | | import com.ruoyi.production.service.ProductOrderService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.List; |
| | | |
| | | @RequestMapping("productOrder") |
| | | @RestController |
| | | @Api(tags = "ç产订å") |
| | | public class ProductOrderController { |
| | | |
| | | @Autowired |
| | | private ProductOrderService productOrderService; |
| | | |
| | | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @GetMapping("page") |
| | | public R page(ProductOrderDto productOrder, Page page) { |
| | | return R.ok(productOrderService.pageProductOrder(page, productOrder)); |
| | | } |
| | | |
| | | @ApiOperation("ç»å®å·¥èºè·¯çº¿") |
| | | @PostMapping("/bindingRoute") |
| | | public R bindingRoute(@RequestBody ProductOrder productOrder) { |
| | | return R.ok(productOrderService.bindingRoute(productOrder)); |
| | | } |
| | | |
| | | @ApiOperation("æ¥è¯¢è§æ ¼åå·å¯¹åºçå·¥èºè·¯çº¿") |
| | | @GetMapping("/listProcessRoute") |
| | | public R listProcessRoute(Long productModelId) { |
| | | return R.ok(productOrderService.listProcessRoute(productModelId)); |
| | | } |
| | | |
| | | /** |
| | | * 导åºç产订å |
| | | */ |
| | | @Log(title = "ç产订å", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(HttpServletResponse response, ProductOrderDto productOrderDto) { |
| | | List<ProductOrderDto> list; |
| | | list = productOrderService.pageProductOrder(new Page<>(1, -1), productOrderDto).getRecords(); |
| | | ExcelUtil<ProductOrderDto> util = new ExcelUtil<ProductOrderDto>(ProductOrderDto.class); |
| | | util.exportExcel(response, list, "çäº§è®¢åæ°æ®"); |
| | | } |
| | | |
| | | @ApiOperation("æ¥è¯¢ç产订å对åºçBOM") |
| | | @GetMapping("/listProcessBom") |
| | | public R listProcessBom(Long orderId) { |
| | | return R.ok(productOrderService.listProcessBom(orderId)); |
| | | } |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.basic.pojo.Customer; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.device.pojo.DeviceRepair; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.controller.BaseController; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.oA.pojo.OaProject; |
| | | import com.ruoyi.production.dto.ProductProcessDto; |
| | | import com.ruoyi.production.pojo.ProductProcess; |
| | | import com.ruoyi.production.service.impl.ProductProcessServiceImpl; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.List; |
| | | |
| | | @RestController |
| | | @Api(tags = "å·¥åº") |
| | | @RequestMapping("/productProcess") |
| | | public class ProductProcessController extends BaseController { |
| | | |
| | | |
| | | @Autowired |
| | | private ProductProcessServiceImpl productProcessService; |
| | | |
| | | @GetMapping("/listPage") |
| | | @Log(title = "å·¥åº-å页æ¥è¯¢", businessType = BusinessType.OTHER) |
| | | @ApiOperation("å·¥åº-å页æ¥è¯¢") |
| | | public AjaxResult listPage(Page page, ProductProcessDto productProcessDto) { |
| | | IPage<ProductProcessDto> listPage = productProcessService.listPage(page, productProcessDto); |
| | | return AjaxResult.success(listPage); |
| | | } |
| | | |
| | | @ApiModelProperty("æ°å¢å·¥åº") |
| | | @PostMapping() |
| | | @Log(title = "æ°å¢", businessType = BusinessType.INSERT) |
| | | public AjaxResult add( @RequestBody ProductProcessDto productProcessDto) { |
| | | return productProcessService.add(productProcessDto); |
| | | } |
| | | |
| | | @ApiOperation("æ´æ°å·¥åº") |
| | | @Log(title = "ä¿®æ¹", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/update") |
| | | public AjaxResult update(@RequestBody ProductProcess productProcess) { |
| | | return AjaxResult.success(productProcessService.updateById(productProcess)); |
| | | } |
| | | |
| | | @ApiOperation("å é¤å·¥åº") |
| | | @DeleteMapping("/batchDelete") |
| | | @Log(title = "å é¤", businessType = BusinessType.DELETE) |
| | | public AjaxResult batchDelete(@RequestBody List<Integer> ids) { |
| | | if(CollectionUtils.isEmpty(ids)){ |
| | | return AjaxResult.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); |
| | | } |
| | | return AjaxResult.success(productProcessService.removeBatchByIds(ids)); |
| | | } |
| | | |
| | | @ApiOperation("æ¥è¯¢ææå·¥åº") |
| | | @GetMapping("/list") |
| | | public AjaxResult list() { |
| | | return AjaxResult.success(productProcessService.list()); |
| | | } |
| | | |
| | | /** |
| | | * 导å
¥å·¥åº |
| | | */ |
| | | @Log(title = "å·¥åº", businessType = BusinessType.IMPORT) |
| | | @PostMapping("/importData") |
| | | public AjaxResult importData(MultipartFile file) throws Exception { |
| | | return productProcessService.importData(file); |
| | | } |
| | | |
| | | @PostMapping("/downloadTemplate") |
| | | @Log(title = "å·¥åº-ä¸è½½æ¨¡æ¿", businessType = BusinessType.EXPORT) |
| | | public void downloadTemplate(HttpServletResponse response) { |
| | | ExcelUtil<ProductProcess> util = new ExcelUtil<ProductProcess>(ProductProcess.class); |
| | | util.importTemplateExcel(response, "å·¥åºæ¨¡æ¿"); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 02:51:09 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/productProcessRoute") |
| | | public class ProductProcessRouteController { |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductProcessRouteItemDto; |
| | | import com.ruoyi.production.mapper.*; |
| | | import com.ruoyi.production.pojo.*; |
| | | import com.ruoyi.production.service.ProductProcessRouteItemService; |
| | | import com.ruoyi.production.service.ProductProcessRouteService; |
| | | import com.ruoyi.production.service.ProductWorkOrderService; |
| | | import com.ruoyi.quality.mapper.QualityInspectMapper; |
| | | import com.ruoyi.quality.pojo.QualityInspect; |
| | | import com.ruoyi.sales.mapper.SalesLedgerMapper; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedger; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RequestMapping("/productProcessRoute") |
| | | @RestController |
| | | @AllArgsConstructor |
| | | @Api(tags = "ç产工èºè·¯çº¿") |
| | | public class ProductProcessRouteItemController { |
| | | |
| | | |
| | | private ProductProcessRouteItemService productProcessRouteItemService; |
| | | private ProductProcessRouteService productProcessRouteService; |
| | | |
| | | @GetMapping("list") |
| | | @ApiOperation("æ ¹æ®Idæ¥è¯¢å·¥èºè·¯çº¿å表") |
| | | public R list(Long orderId) { |
| | | return R.ok(productProcessRouteItemService.listItem(orderId)); |
| | | } |
| | | |
| | | @GetMapping("listMain") |
| | | @ApiOperation("æ ¹æ®Idæ¥è¯¢å·¥èºè·¯çº¿ä¸»è¡¨") |
| | | public R listMain(Long orderId) { |
| | | return R.ok(productProcessRouteService.listMain(orderId)); |
| | | } |
| | | |
| | | @PostMapping("/addRouteItem") |
| | | @ApiOperation("æ°å¢ç产订åçå·¥èºè·¯çº¿è¯¦æ
") |
| | | public R addRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) { |
| | | return productProcessRouteItemService.addRouteItem(productProcessRouteItem); |
| | | } |
| | | |
| | | @PostMapping("/updateRouteItem") |
| | | @ApiOperation("ä¿®æ¹ç产订åçå·¥èºè·¯çº¿è¯¦æ
") |
| | | public R updateRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) { |
| | | return R.ok(productProcessRouteItemService.updateById(productProcessRouteItem)); |
| | | } |
| | | |
| | | @DeleteMapping("/deleteRouteItem/{id}") |
| | | @ApiOperation("å é¤ç产工èºè·¯çº¿") |
| | | public R deleteRouteItem(@PathVariable("id") Long id) { |
| | | return productProcessRouteItemService.deleteRouteItem(id); |
| | | } |
| | | |
| | | @PostMapping ("/sortRouteItem") |
| | | @ApiOperation("æåº") |
| | | public R sortRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) { |
| | | return R.ok(productProcessRouteItemService.sortRouteItem(productProcessRouteItem)); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductProcessDto; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.pojo.ProductStructure; |
| | | import com.ruoyi.production.service.ProductStructureService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Arrays; |
| | | |
| | | @RequestMapping("productStructure") |
| | | @RestController |
| | | @Api(tags = "BOM") |
| | | public class ProductStructureController { |
| | | @Autowired |
| | | private ProductStructureService productStructureService; |
| | | |
| | | |
| | | @ApiOperation("æ°å¢BOM") |
| | | @PostMapping() |
| | | public R addOrUpdate(@RequestBody ProductStructureDto productStructureDto){ |
| | | return R.ok(productStructureService.addProductStructureDto(productStructureDto)); |
| | | } |
| | | |
| | | @ApiOperation("BOMæ¥ç详æ
") |
| | | @GetMapping("/listBybomId/{bomId}") |
| | | public R listBybomId( @PathVariable("bomId") Long bomId){ |
| | | return R.ok(productStructureService.listBybomId(bomId)); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductWorkOrderDto; |
| | | import com.ruoyi.production.service.ProductWorkOrderService; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | @RestController |
| | | @AllArgsConstructor |
| | | @RequestMapping("/productWorkOrder") |
| | | public class ProductWorkOrderController { |
| | | |
| | | private ProductWorkOrderService productWorkOrderservice; |
| | | |
| | | |
| | | /** |
| | | * 产åå·¥åå®ä½ç±»å页æ¥è¯¢ |
| | | */ |
| | | @ApiOperation("产åå·¥åå®ä½ç±»å页æ¥è¯¢") |
| | | @GetMapping("/page") |
| | | public R page(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) { |
| | | return R.ok(productWorkOrderservice.listPage(page, productWorkOrder)); |
| | | } |
| | | |
| | | /** |
| | | * 产åå·¥åæ´æ° |
| | | */ |
| | | @ApiOperation("产å工忴æ°") |
| | | @PostMapping ("/updateProductWorkOrder") |
| | | public R updateProductWorkOrder(@RequestBody ProductWorkOrderDto productWorkOrderDto) { |
| | | return R.ok(productWorkOrderservice.updateProductWorkOrder(productWorkOrderDto)); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductionProductInputDto; |
| | | import com.ruoyi.production.service.ProductionProductInputService; |
| | | import io.swagger.annotations.Api; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | @RequestMapping("productionProductInput") |
| | | @RestController |
| | | @Api(value = "ç产æå
¥") |
| | | public class ProductionProductInputController { |
| | | |
| | | @Autowired |
| | | private ProductionProductInputService productionProductInputService; |
| | | |
| | | @GetMapping("listPage") |
| | | public R page(Page<ProductionProductInputDto> page, ProductionProductInputDto productionProductInputDto) { |
| | | return R.ok(productionProductInputService.listPageProductionProductInputDto(page, productionProductInputDto)); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductProcessRouteItemDto; |
| | | import com.ruoyi.production.dto.ProductionProductMainDto; |
| | | 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 java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | @RequestMapping("productionProductMain") |
| | | @RestController |
| | | @Api(value = "ç产æ¥å·¥") |
| | | public class ProductionProductMainController { |
| | | |
| | | @Autowired |
| | | private ProductionProductMainService productionProductMainService; |
| | | |
| | | /** |
| | | * æ¥å·¥æ¥è¯¢ |
| | | * @param page |
| | | * @param productionProductMainDto |
| | | * @return |
| | | */ |
| | | @GetMapping("listPage") |
| | | public R page(Page<ProductionProductMainDto> page, ProductionProductMainDto productionProductMainDto) { |
| | | return R.ok(productionProductMainService.listPageProductionProductMainDto(page, productionProductMainDto)); |
| | | } |
| | | |
| | | /** |
| | | * æ¥å·¥æ°å¢æ´æ° |
| | | * @param productionProductMainDto |
| | | * @return |
| | | */ |
| | | @PostMapping("addProductMain") |
| | | public R addProductMain(@RequestBody ProductionProductMainDto productionProductMainDto) { |
| | | return R.ok(productionProductMainService.addProductMain(productionProductMainDto)); |
| | | } |
| | | |
| | | @ApiOperation("å 餿¥å·¥") |
| | | @DeleteMapping("/delete") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R delete(@RequestBody ProductionProductMainDto productionProductMainDto) { |
| | | return R.ok(productionProductMainService.removeProductMain(productionProductMainDto)); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductionProductInputDto; |
| | | import com.ruoyi.production.dto.ProductionProductOutputDto; |
| | | import com.ruoyi.production.service.ProductionProductInputService; |
| | | import com.ruoyi.production.service.ProductionProductOutputService; |
| | | import io.swagger.annotations.Api; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | @RequestMapping("productionProductOutput") |
| | | @RestController |
| | | @Api(value = "ç产产åº") |
| | | public class ProductionProductOutputController { |
| | | |
| | | @Autowired |
| | | private ProductionProductOutputService productionProductOutputService; |
| | | |
| | | @GetMapping("listPage") |
| | | public R page(Page<ProductionProductOutputDto> page, ProductionProductOutputDto productionProductOutputDto) { |
| | | return R.ok(productionProductOutputService.listPageProductionProductOutputDto(page, productionProductOutputDto)); |
| | | } |
| | | } |
| | |
| | | package com.ruoyi.production.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | |
| | | import com.ruoyi.production.dto.ProductionDispatchAddDto; |
| | | import com.ruoyi.production.dto.SalesLedgerSchedulingDto; |
| | | import com.ruoyi.production.dto.SalesLedgerSchedulingProcessDto; |
| | | import com.ruoyi.production.mapper.SpeculativeTradingInfoMapper; |
| | | import com.ruoyi.production.pojo.SpeculativeTradingInfo; |
| | | import com.ruoyi.production.service.impl.SalesLedgerSchedulingServiceImpl; |
| | | import com.ruoyi.sales.mapper.LossMapper; |
| | | import com.ruoyi.sales.pojo.Loss; |
| | | 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.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | |
| | | @Autowired |
| | | private SalesLedgerSchedulingServiceImpl salesLedgerSchedulingService; |
| | | |
| | | |
| | | @Autowired |
| | | private SpeculativeTradingInfoMapper speculativeTradingInfoMapper; |
| | | |
| | | @Autowired |
| | | private LossMapper lossMapper; |
| | | |
| | | @GetMapping("/loss") |
| | | @Log(title = "ç产管ç-ç产派工-æèç", businessType = BusinessType.OTHER) |
| | | @ApiOperation("ç产管ç-ç产派工-æèç") |
| | | public AjaxResult loss() { |
| | | return AjaxResult.success(lossMapper.selectOne(new LambdaQueryWrapper<Loss>().last("limit 1"))); |
| | | } |
| | | |
| | | @PostMapping("/addLoss") |
| | | @Log(title = "ç产管ç-ç产派工-æ·»å æèç", businessType = BusinessType.INSERT) |
| | | @ApiOperation("ç产管ç-ç产派工-æ·»å æèç") |
| | | public AjaxResult addLoss(@RequestBody Loss loss) { |
| | | lossMapper.insert(loss); |
| | | return AjaxResult.success("æ·»å æèçæå"); |
| | | } |
| | | |
| | | @PostMapping("/updateLoss") |
| | | @Log(title = "ç产管ç-ç产派工-ä¿®æ¹æèç", businessType = BusinessType.UPDATE) |
| | | @ApiOperation("ç产管ç-ç产派工-ä¿®æ¹æèç") |
| | | public AjaxResult updateLoss(@RequestBody Loss loss) { |
| | | lossMapper.updateById(loss); |
| | | return AjaxResult.success("ä¿®æ¹æèçæå"); |
| | | } |
| | | |
| | | @GetMapping("/list") |
| | | @Log(title = "ç产管ç-ç产派工-çæºä¿¡æ¯", businessType = BusinessType.OTHER) |
| | | @ApiOperation("ç产管ç-ç产派工-çæºä¿¡æ¯") |
| | | public AjaxResult list() { |
| | | List<SpeculativeTradingInfo> result = speculativeTradingInfoMapper.selectList(null); |
| | | result.forEach(item -> { |
| | | item.setCurrentWorkLoad(salesLedgerSchedulingService.getSchedulingNumBySpeculativeTradingName(item.getName()).divide(new BigDecimal(1000),2, RoundingMode.CEILING)); |
| | | item.setVacant(item.getWorkLoad().subtract(item.getCurrentWorkLoad()).setScale(2, RoundingMode.HALF_UP)); //ä¿ç两ä½å°æ° |
| | | }); |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| | | @PostMapping("/addSpeculatTrading") |
| | | @Log(title = "ç产管ç-ç产派工-æ·»å çæºä¿¡æ¯", businessType = BusinessType.INSERT) |
| | | @ApiOperation("ç产管ç-ç产派工-æ·»å çæºä¿¡æ¯") |
| | | public AjaxResult addSpeculatTrading(@RequestBody List<SpeculativeTradingInfo> speculativeTradingInfo) { |
| | | if(CollectionUtils.isEmpty(speculativeTradingInfo)) return AjaxResult.error("æ°æ®ç»ä¸è½ä¸ºç©º"); |
| | | speculativeTradingInfo.forEach(item -> { |
| | | speculativeTradingInfoMapper.insert(item); |
| | | }); |
| | | return AjaxResult.success("æ·»å çæºä¿¡æ¯æå"); |
| | | } |
| | | |
| | | @PostMapping("/updateSpeculatTrading") |
| | | @Log(title = "ç产管ç-ç产派工-ä¿®æ¹çæºä¿¡æ¯", businessType = BusinessType.UPDATE) |
| | | @ApiOperation("ç产管ç-ç产派工-ä¿®æ¹çæºä¿¡æ¯") |
| | | public AjaxResult updateSpeculatTrading(@RequestBody List<SpeculativeTradingInfo> speculativeTradingInfo) { |
| | | if(CollectionUtils.isEmpty(speculativeTradingInfo)) return AjaxResult.error("æ°æ®ç»ä¸è½ä¸ºç©º"); |
| | | speculativeTradingInfo.forEach(item -> { |
| | | speculativeTradingInfoMapper.updateById(item); |
| | | }); |
| | | return AjaxResult.success("ä¿®æ¹çæºä¿¡æ¯æå"); |
| | | } |
| | | |
| | | |
| | | @GetMapping("/listPage") |
| | |
| | | @ApiOperation("ç产管ç-ç产订å-ç产派工") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult productionDispatch(@RequestBody ProductionDispatchAddDto productionDispatchAddDto) { |
| | | int result = salesLedgerSchedulingService.productionDispatch(productionDispatchAddDto); |
| | | List<ProductionDispatchAddDto> productionDispatchAddDtoList = new ArrayList<>(); |
| | | productionDispatchAddDtoList.add(productionDispatchAddDto); |
| | | String result = salesLedgerSchedulingService.productionDispatch(productionDispatchAddDtoList); |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| | | @PostMapping("/productionDispatchList") |
| | | @Log(title = "ç产管ç-ç产订å-èªå¨æ´¾å·¥", businessType = BusinessType.INSERT) |
| | | @ApiOperation("ç产管ç-ç产订å-èªå¨æ´¾å·¥") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult productionDispatchList(@RequestBody List<ProductionDispatchAddDto> productionDispatchAddDto) { |
| | | String result = salesLedgerSchedulingService.productionDispatch(productionDispatchAddDto); |
| | | return AjaxResult.success(result); |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ProcessRouteDto extends ProcessRoute { |
| | | |
| | | private Long productId; |
| | | |
| | | private String productName; |
| | | |
| | | @ApiModelProperty("è§æ ¼") |
| | | private String model; |
| | | |
| | | private String bomNo; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProcessRouteItem; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class ProcessRouteItemDto extends ProcessRouteItem { |
| | | |
| | | @ApiModelProperty(value = "å·¥åºåç§°") |
| | | private String processName; |
| | | |
| | | @ApiModelProperty(value = "å·¥èºè·¯çº¿åç§°") |
| | | private String routeName; |
| | | |
| | | @ApiModelProperty(value = "çäº§çæº") |
| | | private String speculativeTradingName; |
| | | |
| | | @ApiModelProperty(value = "产ååç§°") |
| | | private String productName; |
| | | |
| | | @ApiModelProperty(value = "åä½") |
| | | private String unit; |
| | | |
| | | private Long productId; |
| | | |
| | | |
| | | private String model; |
| | | } |
| | |
| | | @ApiModelProperty(value = "æäº§æ°é") |
| | | private BigDecimal schedulingNum; |
| | | |
| | | |
| | | /** |
| | | * å·¥æ¶å®é¢ |
| | | */ |
| | |
| | | private BigDecimal workHours; |
| | | |
| | | /** |
| | | * 产线 |
| | | */ |
| | | @ApiModelProperty(value = "产线") |
| | | private String productionLine; |
| | | |
| | | /** |
| | | * å·¥åº |
| | | */ |
| | | @ApiModelProperty(value = "å·¥åº") |
| | | private String process; |
| | | |
| | | |
| | | /** |
| | | * æäº§æ¥æ |
| | | */ |
| | | @ApiModelProperty(value = "æäº§æ¥æ") |
| | | private String schedulingDate; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @ApiModelProperty(value = "夿³¨") |
| | | private String remark; |
| | | |
| | | /** |
| | | * æè |
| | | */ |
| | | @ApiModelProperty(value = "æè") |
| | | private String loss; |
| | | |
| | | /** |
| | | * å£å³åç±» |
| | | */ |
| | | @ApiModelProperty(value = "å£å³åç±»") |
| | | private String type; |
| | | |
| | | /** |
| | | * é¢ç¨ |
| | | */ |
| | | @ApiModelProperty(value = "é¢ç¨") |
| | | private String receive; |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProductBom; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | //å页æ¥è¯¢åæ¾æ°æ® |
| | | @Data |
| | | public class ProductBomDto extends ProductBom { |
| | | |
| | | //产ååç§° |
| | | private String productName; |
| | | |
| | | //产åè§æ ¼åå· |
| | | private String productModelName; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import com.ruoyi.production.pojo.ProductOrder; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | | public class ProductOrderDto extends ProductOrder { |
| | | |
| | | @ApiModelProperty(value = "éå®ååå·") |
| | | @Excel(name = "éå®ååå·") |
| | | private String salesContractNo; |
| | | |
| | | @ApiModelProperty(value = "项ç®å") |
| | | @Excel(name = "项ç®å") |
| | | private String projectName; |
| | | |
| | | @ApiModelProperty(value = "客æ·åç§°") |
| | | @Excel(name = "客æ·åç§°") |
| | | private String customerName; |
| | | |
| | | @ApiModelProperty(value = "产ååç§°") |
| | | @Excel(name = "产ååç§°") |
| | | private String productCategory; |
| | | |
| | | @ApiModelProperty(value = "è§æ ¼") |
| | | @Excel(name = "è§æ ¼") |
| | | private String specificationModel; |
| | | |
| | | @ApiModelProperty(value = "å·¥èºè·¯çº¿ç¼å·") |
| | | @Excel(name = "å·¥èºè·¯çº¿ç¼å·") |
| | | private String processRouteCode; |
| | | |
| | | @ApiModelProperty(value = "å®æç¶æ") |
| | | @Excel(name = "å®æç¶æ") |
| | | private BigDecimal completionStatus; |
| | | |
| | | @ApiModelProperty(value = "BOMç¼å·") |
| | | @Excel(name = "BOMç¼å·") |
| | | private String bomNo; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProductProcess; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel |
| | | public class ProductProcessDto extends ProductProcess { |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProcessRouteItem; |
| | | import com.ruoyi.production.pojo.ProductProcessRouteItem; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class ProductProcessRouteItemDto extends ProductProcessRouteItem { |
| | | |
| | | @ApiModelProperty(value = "å·¥åºåç§°") |
| | | private String processName; |
| | | |
| | | @ApiModelProperty(value = "产ååç§°") |
| | | private String productCategory; |
| | | |
| | | @ApiModelProperty(value = "åä½") |
| | | private String unit; |
| | | |
| | | private Long productId; |
| | | |
| | | private String productName; |
| | | |
| | | private String model; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProductStructure; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class ProductStructureDto extends ProductStructure { |
| | | |
| | | @ApiModelProperty(value = "å·¥èºåç§°") |
| | | private String processName; |
| | | @ApiModelProperty(value = "产ååç§°") |
| | | private String productName; |
| | | @ApiModelProperty(value = "产åid") |
| | | private Long productId; |
| | | |
| | | private String model; |
| | | |
| | | private List<ProductStructure> productStructureList; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import com.ruoyi.production.pojo.ProductWorkOrder; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @Data |
| | | public class ProductWorkOrderDto extends ProductWorkOrder { |
| | | |
| | | //产ååç§° |
| | | @ApiModelProperty(value = "产ååç§°") |
| | | private String productName; |
| | | |
| | | //è§æ ¼ |
| | | @ApiModelProperty(value = "è§æ ¼") |
| | | private String model; |
| | | |
| | | //å·¥åº |
| | | @ApiModelProperty(value = "å·¥åº") |
| | | private String processName; |
| | | |
| | | //åä½ |
| | | @ApiModelProperty(value = "åä½") |
| | | private String unit; |
| | | |
| | | |
| | | //ç产订åå· |
| | | @ApiModelProperty(value = "ç产订åå·") |
| | | private String productOrderNpsNo; |
| | | |
| | | @ApiModelProperty(value = "宿è¿åº¦") |
| | | private BigDecimal completionStatus; |
| | | } |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | |
| | | @ApiModelProperty(value = "æäº§æ¥æ") |
| | | private String schedulingDate; |
| | | |
| | | /** |
| | | * çäº§çæº |
| | | */ |
| | | private String speculativeTradingName; |
| | | /** |
| | | * 产线 |
| | | */ |
| | | @ApiModelProperty(value = "产线") |
| | | private String productionLine; |
| | | |
| | | /** |
| | | * è§æ ¼åå· |
| | | */ |
| | | private String specificationModel; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProductionProductInput; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ProductionProductInputDto extends ProductionProductInput { |
| | | @ApiModelProperty(value = "æ¥å·¥åå·") |
| | | private String productNo; |
| | | |
| | | @ApiModelProperty(value = "产ååå·") |
| | | private String model; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProductionProductMain; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | public class ProductionProductMainDto extends ProductionProductMain { |
| | | @ApiModelProperty(value = "å·¥åç¼å·") |
| | | private String workOrderNo; |
| | | |
| | | @ApiModelProperty(value = "å·¥åç¶æ") |
| | | private String workOrderStatus; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥äººåæµç§°") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥æ°é") |
| | | private BigDecimal quantity; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦æ¥å·¥") |
| | | private boolean reportWork; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥id") |
| | | private Long productMainId; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.dto; |
| | | |
| | | import com.ruoyi.production.pojo.ProductionProductInput; |
| | | import com.ruoyi.production.pojo.ProductionProductOutput; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ProductionProductOutputDto extends ProductionProductOutput { |
| | | @ApiModelProperty(value = "æ¥å·¥åå·") |
| | | private String productNo; |
| | | |
| | | @ApiModelProperty(value = "产ååå·") |
| | | private String model; |
| | | } |
| | |
| | | @ApiModelProperty(value = "çäº§æ¥æ") |
| | | private String schedulingDate; |
| | | |
| | | |
| | | /** |
| | | * å
¥åºåä»· |
| | | */ |
| | | @ApiModelProperty(value = "å
¥åºåä»·") |
| | | private BigDecimal unitPrice; |
| | | |
| | | /** |
| | | * å
¥åºæ»ä»· |
| | | */ |
| | | @ApiModelProperty(value = "å
¥åºæ»ä»·") |
| | | private BigDecimal totalPrice; |
| | | } |
| | |
| | | @ApiModelProperty(value = "éå®å°è´¦ID") |
| | | private Long salesLedgerId; |
| | | |
| | | @ApiModelProperty(value = "ç产æ»é(åä½kg)") |
| | | private BigDecimal totalProduction; |
| | | |
| | | /** |
| | | * çäº§çæº |
| | | */ |
| | | @Excel(name = "çäº§çæº") |
| | | private String speculativeTradingName; |
| | | |
| | | /** |
| | | * éå®ååå· |
| | | */ |
| | |
| | | @Excel(name = "ç¶æ") |
| | | private String status; |
| | | |
| | | @Excel(name = "è¿åº¦") |
| | | private BigDecimal progress; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | private Long tenantId; |
| | | |
| | |
| | | @ApiModelProperty(value = "éå®äº§åID") |
| | | private Long salesLedgerProductId; |
| | | |
| | | @ApiModelProperty(value = "ç产æ»é(åä½kg)") |
| | | private BigDecimal totalProduction; |
| | | |
| | | @ApiModelProperty(value = "éå®å°è´¦ID") |
| | | private Long salesLedgerId; |
| | | |
| | | /** |
| | | * çäº§çæº |
| | | */ |
| | | @Excel(name = "çäº§çæº") |
| | | private String speculativeTradingName; |
| | | |
| | | @ApiModelProperty(value = "产线") |
| | | @Excel(name = "产线") |
| | | private String productionLine; |
| | | |
| | | @ApiModelProperty(value = "å¼å§æ¶é´") |
| | | private String entryDateStart; |
| | | |
| | |
| | | @ApiModelProperty(value = "å·¥åº") |
| | | @Excel(name = "å·¥åº") |
| | | private String process; |
| | | |
| | | |
| | | /** |
| | | * 产线 |
| | | */ |
| | | @ApiModelProperty(value = "产线") |
| | | @Excel(name = "产线") |
| | | private String productionLine; |
| | | /** |
| | | * æäº§æ¥æ |
| | | */ |
| | |
| | | @Excel(name = "ç¶æ", readConverterExp = "1=å¾
ç产,2=ç产ä¸,3=å·²æ¥å·¥") |
| | | private String statusName; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @ApiModelProperty(value = "夿³¨") |
| | | @Excel(name = "夿³¨") |
| | | private String remark; |
| | | |
| | | /** |
| | | * æè |
| | | */ |
| | | @ApiModelProperty(value = "æè") |
| | | @Excel(name = "æè") |
| | | private String loss; |
| | | |
| | | /** |
| | | * ç»å®æºå¨ |
| | | */ |
| | | @ApiModelProperty(value = "ç»å®æºå¨") |
| | | @Excel(name = "ç»å®æºå¨") |
| | | private String speculativeTradingName; |
| | | |
| | | /** |
| | | * å£å³åç±» |
| | | */ |
| | | @ApiModelProperty(value = "å£å³åç±»") |
| | | @Excel(name = "å£å³åç±»") |
| | | private String type; |
| | | |
| | | /** |
| | | * é¢ç¨ |
| | | */ |
| | | @ApiModelProperty(value = "é¢ç¨") |
| | | @Excel(name = "é¢ç¨") |
| | | private String receive; |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProcessRouteItemDto; |
| | | import com.ruoyi.production.pojo.ProcessRouteItem; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface ProcessRouteItemMapper extends BaseMapper<ProcessRouteItem> { |
| | | |
| | | |
| | | List<ProcessRouteItemDto> listProcessRouteItemDto(@Param("c") ProcessRouteItemDto processRouteItemDto); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProcessRouteDto; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | @Mapper |
| | | public interface ProcessRouteMapper extends BaseMapper<ProcessRoute> { |
| | | |
| | | IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page,@Param("c") ProcessRouteDto processRouteDto); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProductBomDto; |
| | | import com.ruoyi.production.dto.ProductProcessDto; |
| | | import com.ruoyi.production.pojo.ProductBom; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * <p> |
| | | * BOM主表 Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 09:59:27 |
| | | */ |
| | | @Mapper |
| | | public interface ProductBomMapper extends BaseMapper<ProductBom> { |
| | | |
| | | IPage<ProductBomDto> listPage(Page page, @Param("c") ProductBomDto productBomDto); |
| | | |
| | | ProductBomDto getById(@Param("bomId") Long bomId); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProductBomDto; |
| | | import com.ruoyi.production.dto.ProductOrderDto; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import com.ruoyi.production.pojo.ProductOrder; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface ProductOrderMapper extends BaseMapper<ProductOrder> { |
| | | |
| | | IPage<ProductOrderDto> pageProductOrder(Page page, @Param("c") ProductOrderDto productOrder); |
| | | /** |
| | | * æ ¹æ®è®¢åIDæ¥è¯¢å·¥åæ¥å·¥ |
| | | */ |
| | | ProductOrderDto productMainByOrderId(@Param("c") ProductOrder productOrder); |
| | | |
| | | List<ProcessRoute> listProcessRoute(@Param("productModelId") Long productModelId); |
| | | |
| | | List<ProductStructureDto> listProcessBom(@Param("orderId") Long orderId); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProductProcessDto; |
| | | import com.ruoyi.production.pojo.ProductProcess; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | @Mapper |
| | | public interface ProductProcessMapper extends BaseMapper<ProductProcess> { |
| | | IPage<ProductProcessDto> listPage(Page page,@Param("productProcessDto") ProductProcessDto productProcessDto); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.production.dto.ProductProcessRouteItemDto; |
| | | import com.ruoyi.production.pojo.ProductProcessRouteItem; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface ProductProcessRouteItemMapper extends BaseMapper<ProductProcessRouteItem> { |
| | | List<ProductProcessRouteItemDto> listItem(@Param("orderId") Long orderId); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.ruoyi.production.dto.ProcessRouteDto; |
| | | import com.ruoyi.production.pojo.ProductProcessRoute; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 02:51:09 |
| | | */ |
| | | @Mapper |
| | | public interface ProductProcessRouteMapper extends BaseMapper<ProductProcessRoute> { |
| | | |
| | | ProcessRouteDto listMain(@Param("orderId") Long orderId); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.pojo.ProductStructure; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface ProductStructureMapper extends BaseMapper<ProductStructure> { |
| | | |
| | | List<ProductStructureDto> listBybomId(@Param("bomId") Long bomId); |
| | | |
| | | List<ProductStructureDto> listByproductModelId(@Param("productModelId") Long productModelId); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProductWorkOrderDto; |
| | | import com.ruoyi.production.pojo.ProductWorkOrder; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface ProductWorkOrderMapper extends BaseMapper<ProductWorkOrder> { |
| | | |
| | | IPage<ProductWorkOrderDto> pageProductWorkOrder(Page<ProductWorkOrderDto> page, @Param("c") ProductWorkOrderDto productWorkOrder); |
| | | |
| | | int updatePlanQuantity(Map<String, Object> params); |
| | | |
| | | /** |
| | | * 忻工åè®¡åæ°éï¼ä»production_product_outputåquantityå åplan_quantity |
| | | * @param productMainId |
| | | * @return |
| | | */ |
| | | int rollbackPlanQuantity(@Param("productMainId") Long productMainId); |
| | | |
| | | List<ProductWorkOrderDto> selectProductWorkOrderDtoList(); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProductionProductInputDto; |
| | | import com.ruoyi.production.pojo.ProductionProductInput; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface ProductionProductInputMapper extends BaseMapper<ProductionProductInput> { |
| | | IPage<ProductionProductInputDto> listPageProductionProductInputDto(Page page, @Param("c") ProductionProductInputDto productionProductInputDto); |
| | | |
| | | /** |
| | | * æ ¹æ®ç产主表IDæ¹éå 餿å
¥è¡¨æ°æ® |
| | | */ |
| | | int deleteByProductMainIds(@Param("productMainIds") List<Long> productMainIds); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProductionProductMainDto; |
| | | import com.ruoyi.production.pojo.ProductionProductMain; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface ProductionProductMainMapper extends BaseMapper<ProductionProductMain> { |
| | | |
| | | IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, @Param("c") ProductionProductMainDto productionProductMainDto); |
| | | |
| | | /** |
| | | * æ ¹æ®å·¥åIDæ¹éå é¤çäº§ä¸»è¡¨æ°æ® |
| | | */ |
| | | int deleteByWorkOrderIds(@Param("workOrderIds") List<Long> workOrderIds); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.production.dto.ProductionProductOutputDto; |
| | | import com.ruoyi.production.pojo.ProductionProductOutput; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface ProductionProductOutputMapper extends BaseMapper<ProductionProductOutput> { |
| | | IPage<ProductionProductOutputDto> listPageProductionProductOutputDto(Page page, @Param("c") ProductionProductOutputDto productionProductOutputDto); |
| | | |
| | | /** |
| | | * æ ¹æ®ç产主表IDæ¹éå é¤äº§åºè¡¨æ°æ® |
| | | */ |
| | | int deleteByProductMainIds(@Param("productMainIds") List<Long> productMainIds); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.production.pojo.SpeculativeTradingInfo; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/11/11 15:40 |
| | | */ |
| | | public interface SpeculativeTradingInfoMapper extends BaseMapper<SpeculativeTradingInfo> { |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.FieldFill; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | @TableName("process_route") |
| | | @Data |
| | | @ApiModel(value = "processRoute", description = "å·¥èºè·¯çº¿ä¸»è¡¨") |
| | | public class ProcessRoute { |
| | | |
| | | @ApiModelProperty(value = "åºå·") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "产åID") |
| | | //product_model |
| | | private Long productModelId; |
| | | |
| | | @ApiModelProperty(value = "æè¿°") |
| | | private String description; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty(value = "å·¥èºè·¯çº¿ç¼ç ") |
| | | private String processRouteCode; |
| | | |
| | | @ApiModelProperty(value = "BOMçID") |
| | | private Long bomId; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @TableName("process_route_item") |
| | | @ApiModel(value = "processRouteItem", description = "å·¥èºè·¯çº¿å表") |
| | | public class ProcessRouteItem { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "å·¥èºè·¯çº¿id") |
| | | private Long routeId; |
| | | |
| | | @ApiModelProperty(value = "å·¥åºid") |
| | | private Long processId; |
| | | |
| | | @ApiModelProperty(value ="产åid") |
| | | private Long productModelId; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | private LocalDateTime createTime; |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @TableField(fill = FieldFill.UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty(value ="æå¨æåº") |
| | | private Integer dragSort; |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.FieldFill; |
| | | 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.time.LocalDateTime; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | /** |
| | | * <p> |
| | | * BOM主表 |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 09:59:27 |
| | | */ |
| | | @Getter |
| | | @Setter |
| | | @TableName("product_bom") |
| | | @ApiModel(value = "ProductBom对象", description = "BOM主表") |
| | | public class ProductBom implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty("bomç¼å·") |
| | | private String bomNo; |
| | | |
| | | @ApiModelProperty("产åè§æ ¼id") |
| | | private Long productModelId; |
| | | |
| | | @ApiModelProperty("夿³¨") |
| | | private String remark; |
| | | |
| | | @ApiModelProperty("çæ¬å·") |
| | | private String version; |
| | | |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty("æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty("å建è
") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long createUser; |
| | | |
| | | @ApiModelProperty("æ´æ°è
") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private Long updateUser; |
| | | |
| | | @ApiModelProperty("ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @TableName("product_order") |
| | | public class ProductOrder implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** |
| | | * éå®å°è´¦id |
| | | */ |
| | | @ApiModelProperty(value = "éå®å°è´¦id") |
| | | private Long salesLedgerId; |
| | | |
| | | /** |
| | | * éå®å°è´¦äº§åid(sales_ledger_product) |
| | | */ |
| | | @ApiModelProperty(value = "éå®å°è´¦äº§åid") |
| | | private Long productModelId; |
| | | |
| | | /** |
| | | * å·¥èºè·¯çº¿id |
| | | */ |
| | | @ApiModelProperty(value = "å·¥èºè·¯çº¿id") |
| | | private Long routeId; |
| | | |
| | | /** |
| | | * ç产订åå· |
| | | */ |
| | | @ApiModelProperty(value = "ç产订åå·") |
| | | @Excel(name = "ç产订åå·") |
| | | private String npsNo; |
| | | |
| | | /** |
| | | * ç§æ·id |
| | | */ |
| | | @ApiModelProperty(value = "ç§æ·id") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | //å建æ¶é´ |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @Excel(name = "å建æ¶é´") |
| | | private LocalDateTime createTime; |
| | | |
| | | //ä¿®æ¹æ¶é´ |
| | | @ApiModelProperty(value = "ä¿®æ¹æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime updateTime; |
| | | |
| | | |
| | | /** |
| | | * éæ±æ°é |
| | | */ |
| | | @ApiModelProperty(value = "éæ±æ°é") |
| | | @Excel(name = "éæ±æ°é") |
| | | private BigDecimal quantity; |
| | | |
| | | /** |
| | | * 宿æ°é |
| | | */ |
| | | @ApiModelProperty(value = "宿æ°é") |
| | | @Excel(name = "宿æ°é") |
| | | private BigDecimal completeQuantity; |
| | | |
| | | @Excel(name = "å¼å§æ¶é´") |
| | | @ApiModelProperty(value = "å¼å§æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime startTime; |
| | | |
| | | @ApiModelProperty(value = "ç»ææ¶é´") |
| | | @Excel(name = "ç»ææ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime endTime; |
| | | |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @TableName("product_process") |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | | @ApiModel(value = "productProcess", description = "å·¥åºè¡¨") |
| | | public class ProductProcess implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** |
| | | * å·¥åºåç§° |
| | | */ |
| | | @Excel(name = "å·¥åºåç§°") |
| | | private String name; |
| | | |
| | | /** |
| | | * å·¥åºç¼å· |
| | | */ |
| | | @Excel(name = "å·¥åºç¼å·") |
| | | private String no; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @Excel(name = "夿³¨") |
| | | private String remark; |
| | | |
| | | |
| | | /** |
| | | * å·¥èµå®é¢ |
| | | */ |
| | | @Excel(name = "å·¥èµå®é¢") |
| | | private BigDecimal salaryQuota; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime createTime; |
| | | |
| | | /** |
| | | * ä¿®æ¹æ¶é´ |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime updateTime; |
| | | |
| | | /** |
| | | * ç§æ·ID |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.FieldFill; |
| | | 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.time.LocalDateTime; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 02:51:09 |
| | | */ |
| | | @Getter |
| | | @Setter |
| | | @TableName("product_process_route") |
| | | @ApiModel(value = "ProductProcessRoute对象", description = "") |
| | | public class ProductProcessRoute implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty("产åid") |
| | | //product_model |
| | | private Long productModelId; |
| | | |
| | | @ApiModelProperty("æè¿°") |
| | | private String description; |
| | | |
| | | @ApiModelProperty("ç§æ·id") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | @ApiModelProperty("å½å
¥æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty("æ´æ°æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty("å
³èbomçid") |
| | | private Long bomId; |
| | | |
| | | @ApiModelProperty("å·¥èºè·¯çº¿ç¼ç ") |
| | | private String processRouteCode; |
| | | |
| | | @ApiModelProperty("ç产订åçid") |
| | | private Long productOrderId; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @TableName("product_process_route_item") |
| | | public class ProductProcessRouteItem { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "ç产订åid(product_order_id)") |
| | | private Long productOrderId; |
| | | |
| | | @ApiModelProperty(value = "ç产订åçå·¥èºè·¯çº¿id(product_process_route)") |
| | | private Long productRouteId; |
| | | |
| | | @ApiModelProperty(value = "å·¥åºid") |
| | | private Long processId; |
| | | |
| | | @ApiModelProperty(value ="产åid") |
| | | private Long productModelId; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | private LocalDateTime createTime; |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @TableField(fill = FieldFill.UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty(value ="æå¨æåº") |
| | | private Integer dragSort; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @TableName("product_structure") |
| | | @Data |
| | | @ApiModel(value = "ProductStructure", description = "BOMå表") |
| | | public class ProductStructure { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** |
| | | * 产ååç§° |
| | | */ |
| | | private Long productModelId; |
| | | |
| | | /** |
| | | * å·¥åºid |
| | | */ |
| | | private Long processId; |
| | | |
| | | /** |
| | | * åä½äº§åºéè¦æ°é |
| | | */ |
| | | private BigDecimal unitQuantity; |
| | | |
| | | /** |
| | | * éæ±æ°é |
| | | */ |
| | | private BigDecimal demandedQuantity; |
| | | |
| | | /** |
| | | * åä½ |
| | | */ |
| | | private String unit; |
| | | |
| | | /** |
| | | * ç§æ·ID |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | /** |
| | | * å
³èBOMid |
| | | */ |
| | | private Long bomId; |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * 产åå·¥åå®ä½ç±» |
| | | * å¯¹åºæ°æ®åºè¡¨ï¼product_work_order |
| | | */ |
| | | @Data |
| | | @TableName("product_work_order") |
| | | public class ProductWorkOrder implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主é®id |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** |
| | | * å·¥èºè·¯çº¿é¡¹ç®id |
| | | */ |
| | | @ApiModelProperty(value = "å·¥èºè·¯çº¿é¡¹ç®id") |
| | | private Long productProcessRouteItemId; |
| | | |
| | | /** |
| | | * ç产订åid |
| | | */ |
| | | @ApiModelProperty(value = "ç产订åid") |
| | | private Long productOrderId; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime createTime; |
| | | |
| | | /** |
| | | * ä¿®æ¹æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value = "ä¿®æ¹æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime updateTime; |
| | | |
| | | /** |
| | | * å·¥åç¼å· |
| | | */ |
| | | @ApiModelProperty(value = "å·¥åç¼å·") |
| | | private String workOrderNo; |
| | | |
| | | /** |
| | | * ç¶æ 1 å¾
确认 2 å¾
ç产 3çäº§ä¸ 4已宿 |
| | | */ |
| | | @ApiModelProperty(value = "ç¶æ 1 å¾
确认 2 å¾
ç产 3çäº§ä¸ 4已宿") |
| | | private Integer status; |
| | | |
| | | /** |
| | | * ç§æ·id |
| | | */ |
| | | @ApiModelProperty(value = "ç§æ·id") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | /** |
| | | * 计åå¼å§æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value = "计åå¼å§æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate planStartTime; |
| | | |
| | | /** |
| | | * 计åç»ææ¶é´ |
| | | */ |
| | | @ApiModelProperty(value = "计åç»ææ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate planEndTime; |
| | | |
| | | /** |
| | | * å®é
å¼å§æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value = "å®é
å¼å§æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate actualStartTime; |
| | | |
| | | /** |
| | | * å®é
ç»ææ¶é´ |
| | | */ |
| | | @ApiModelProperty(value = "å®é
ç»ææ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate actualEndTime; |
| | | |
| | | /** |
| | | * éæ±é |
| | | */ |
| | | @ApiModelProperty(value = "éæ±æ°é") |
| | | private BigDecimal planQuantity; |
| | | |
| | | /** |
| | | * 宿æ°é |
| | | */ |
| | | @ApiModelProperty(value = "宿æ°é") |
| | | private BigDecimal completeQuantity; |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @TableName("production_product_input") |
| | | public class ProductionProductInput { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥id") |
| | | private Long productMainId; |
| | | |
| | | @ApiModelProperty(value = "产åid") |
| | | private Long productModelId; |
| | | |
| | | @ApiModelProperty(value = "æ°é") |
| | | private BigDecimal quantity; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @TableName("production_product_main") |
| | | public class ProductionProductMain { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥åå·") |
| | | private String productNo; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥äººåid") |
| | | private Long userId; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥äººå") |
| | | private String userName; |
| | | |
| | | @ApiModelProperty(value = "ç产项ç®id") |
| | | private Long productProcessRouteItemId; |
| | | |
| | | @ApiModelProperty(value = "å·¥åid") |
| | | private Long workOrderId; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥ç¶æ") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @TableField(fill = FieldFill.UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @TableName("production_product_output") |
| | | public class ProductionProductOutput { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "æ¥å·¥id") |
| | | private Long productMainId; |
| | | |
| | | @ApiModelProperty(value = "产åid") |
| | | private Long productModelId; |
| | | |
| | | @ApiModelProperty(value = "æ°é") |
| | | private BigDecimal quantity; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | } |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | |
| | |
| | | private Long schedulingUserId; |
| | | |
| | | /** |
| | | * çäº§çæº |
| | | */ |
| | | private String speculativeTradingName; |
| | | |
| | | /** |
| | | * 产线 |
| | | */ |
| | | private String productionLine; |
| | | |
| | | /** |
| | | * 派工人åç§° |
| | | */ |
| | | private String schedulingUserName; |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | |
| | |
| | | * å·¥åº |
| | | */ |
| | | private String process; |
| | | |
| | | |
| | | /** |
| | | * 产线 |
| | | */ |
| | | private String productionLine; |
| | | /** |
| | | * æäº§æ¥æ |
| | | */ |
| | |
| | | private Integer status; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | /** |
| | | * æè |
| | | */ |
| | | private String loss; |
| | | |
| | | /** |
| | | * å£å³åç±» |
| | | */ |
| | | private String type; |
| | | |
| | | /** |
| | | * é¢ç¨ |
| | | */ |
| | | private String receive; |
| | | |
| | | /** |
| | | * å建è
|
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/11/11 15:38 |
| | | */ |
| | | @TableName("speculative_trading_info") |
| | | @Data |
| | | public class SpeculativeTradingInfo { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** |
| | | * çæºåç§° |
| | | */ |
| | | private String name; |
| | | |
| | | /** |
| | | * çæºå·¥ä½é(åä½kg) |
| | | */ |
| | | private BigDecimal workLoad; |
| | | |
| | | |
| | | /** |
| | | * æåº |
| | | */ |
| | | private Integer sort; |
| | | |
| | | /** |
| | | * çæºæ£å¨å·¥ä½é(åä½kg) |
| | | */ |
| | | @TableField(exist = false) |
| | | private BigDecimal currentWorkLoad; |
| | | |
| | | /** |
| | | * çæºç©ºä½å·¥ä½é(åä½kg) |
| | | */ |
| | | @TableField(exist = false) |
| | | private BigDecimal vacant; |
| | | |
| | | /** |
| | | * å建è
|
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Integer createUser; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | /** |
| | | * ä¿®æ¹è
|
| | | */ |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private Integer updateUser; |
| | | |
| | | /** |
| | | * ä¿®æ¹æ¶é´ |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | /** |
| | | * ç§æ·ID |
| | | */ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProcessRouteItemDto; |
| | | import com.ruoyi.production.pojo.ProcessRouteItem; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface ProcessRouteItemService extends IService<ProcessRouteItem> { |
| | | List<ProcessRouteItemDto> listProcessRouteItemDto( ProcessRouteItemDto processRouteItemDto); |
| | | |
| | | int sort(ProcessRouteItem processRouteItem); |
| | | |
| | | String batchDelete(Long id); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.production.dto.ProcessRouteDto; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import io.swagger.models.auth.In; |
| | | |
| | | public interface ProcessRouteService extends IService<ProcessRoute> { |
| | | |
| | | IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto); |
| | | |
| | | Integer saveProcessRoute(ProcessRoute processRoute); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.production.dto.ProductBomDto; |
| | | import com.ruoyi.production.dto.ProductProcessDto; |
| | | import com.ruoyi.production.pojo.ProductBom; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * BOM主表 æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 09:59:27 |
| | | */ |
| | | public interface ProductBomService extends IService<ProductBom> { |
| | | |
| | | IPage<ProductBomDto> listPage(Page page, ProductBomDto productBomDto); |
| | | |
| | | AjaxResult add(ProductBom productBom); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.production.dto.ProductBomDto; |
| | | import com.ruoyi.production.dto.ProductOrderDto; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import com.ruoyi.production.pojo.ProductOrder; |
| | | |
| | | import java.util.List; |
| | | |
| | | |
| | | public interface ProductOrderService extends IService<ProductOrder> { |
| | | |
| | | IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder); |
| | | |
| | | int bindingRoute(ProductOrder productOrder); |
| | | |
| | | List<ProcessRoute> listProcessRoute(Long productModelId); |
| | | |
| | | List<ProductStructureDto> listProcessBom(Long orderId); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductProcessRouteItemDto; |
| | | import com.ruoyi.production.pojo.ProductProcessRouteItem; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface ProductProcessRouteItemService extends IService<ProductProcessRouteItem> { |
| | | List<ProductProcessRouteItemDto> listItem(Long orderId); |
| | | |
| | | R deleteRouteItem(Long id); |
| | | |
| | | R addRouteItem(ProductProcessRouteItem productProcessRouteItem); |
| | | |
| | | int sortRouteItem(ProductProcessRouteItem productProcessRouteItem); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.ruoyi.production.dto.ProcessRouteDto; |
| | | import com.ruoyi.production.pojo.ProductProcessRoute; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 02:51:09 |
| | | */ |
| | | public interface ProductProcessRouteService extends IService<ProductProcessRoute> { |
| | | |
| | | ProcessRouteDto listMain(Long orderId); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.device.pojo.DeviceRepair; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.production.dto.*; |
| | | import com.ruoyi.production.pojo.ProductProcess; |
| | | import com.ruoyi.production.pojo.SalesLedgerScheduling; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/7/21 14:39 |
| | | */ |
| | | public interface ProductProcessService extends IService<ProductProcess> { |
| | | IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto); |
| | | |
| | | AjaxResult add(ProductProcessDto productProcessDto); |
| | | |
| | | AjaxResult importData(MultipartFile file); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.basic.dto.ProductModelDto; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.pojo.ProductStructure; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface ProductStructureService extends IService<ProductStructure> { |
| | | |
| | | |
| | | Boolean addProductStructureDto(ProductStructureDto productStructureDto); |
| | | |
| | | List<ProductStructureDto> listBybomId(Long bomId); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.production.dto.ProductWorkOrderDto; |
| | | import com.ruoyi.production.pojo.ProductWorkOrder; |
| | | |
| | | public interface ProductWorkOrderService extends IService<ProductWorkOrder>{ |
| | | |
| | | IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder); |
| | | |
| | | int updateProductWorkOrder(ProductWorkOrderDto productWorkOrderDto); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.production.dto.ProductionProductInputDto; |
| | | import com.ruoyi.production.pojo.ProductionProductInput; |
| | | |
| | | public interface ProductionProductInputService extends IService<ProductionProductInput> { |
| | | IPage<ProductionProductInputDto> listPageProductionProductInputDto(Page page, ProductionProductInputDto productionProductInputDto); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.production.dto.ProcessRouteItemDto; |
| | | import com.ruoyi.production.dto.ProductOrderDto; |
| | | import com.ruoyi.production.dto.ProductionProductMainDto; |
| | | import com.ruoyi.production.pojo.ProductionProductMain; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface ProductionProductMainService extends IService<ProductionProductMain> { |
| | | IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto); |
| | | |
| | | Boolean addProductMain(ProductionProductMainDto productionProductMainDto); |
| | | |
| | | Boolean removeProductMain(ProductionProductMainDto productionProductMainDto); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.production.dto.ProductionProductOutputDto; |
| | | import com.ruoyi.production.pojo.ProductionProductOutput; |
| | | |
| | | public interface ProductionProductOutputService extends IService<ProductionProductOutput> { |
| | | IPage<ProductionProductOutputDto> listPageProductionProductOutputDto(Page page, ProductionProductOutputDto productionProductOutputDto); |
| | | } |
| | |
| | | |
| | | void export(HttpServletResponse response); |
| | | |
| | | int productionDispatch(ProductionDispatchAddDto productionDispatchAddDto); |
| | | String productionDispatch(List<ProductionDispatchAddDto> productionDispatchAddDto); |
| | | |
| | | IPage<SalesLedgerSchedulingProcessDto> listPageProcess(Page page, SalesLedgerSchedulingProcessDto salesLedgerSchedulingDto); |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.production.dto.ProcessRouteItemDto; |
| | | import com.ruoyi.production.mapper.ProcessRouteItemMapper; |
| | | import com.ruoyi.production.pojo.ProcessRouteItem; |
| | | import com.ruoyi.production.service.ProcessRouteItemService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public class ProcessRouteItemServiceImpl extends ServiceImpl<ProcessRouteItemMapper, ProcessRouteItem> implements ProcessRouteItemService { |
| | | |
| | | @Autowired |
| | | private ProcessRouteItemMapper processRouteItemMapper; |
| | | |
| | | @Override |
| | | public List<ProcessRouteItemDto> listProcessRouteItemDto(ProcessRouteItemDto processRouteItemDto) { |
| | | return processRouteItemMapper.listProcessRouteItemDto( processRouteItemDto); |
| | | } |
| | | |
| | | //æåº |
| | | @Override |
| | | public int sort(ProcessRouteItem processRouteItem) { |
| | | //æ¥è¯¢è¢«æ¹å¨çè¿æ¡æ°æ® |
| | | ProcessRouteItem oldProcessRouteItem = processRouteItemMapper.selectById(processRouteItem.getId()); |
| | | //æ¥è¯¢è¯¥å·¥èºè·¯çº¿çææå·¥åºå¹¶æç
§é¡ºåºæåº |
| | | List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery() |
| | | .eq(ProcessRouteItem::getRouteId, oldProcessRouteItem.getRouteId()) |
| | | .orderByAsc(ProcessRouteItem::getDragSort)); |
| | | // è·åç®æ ä½ç½®ï¼ç§»å¨å°ç¬¬å 个ä¹åï¼ |
| | | Integer targetPosition = processRouteItem.getDragSort(); |
| | | if (targetPosition != null && targetPosition >= 0) { |
| | | // ç§»å¨å
ç´ å°æ°çä½ç½® |
| | | processRouteItems.remove(oldProcessRouteItem); |
| | | processRouteItems.add(targetPosition-1, oldProcessRouteItem); |
| | | // æ´æ°ææåå½±åçæåºå段 |
| | | for (int i = 0; i < processRouteItems.size(); i++) { |
| | | ProcessRouteItem item = processRouteItems.get(i); |
| | | if (!item.getId().equals(oldProcessRouteItem.getId())) { |
| | | // æ£æ¥æ¯å¦éè¦æ´æ°æåºå¼ |
| | | if (item.getDragSort() != i+1) { |
| | | item.setDragSort(i+1); |
| | | processRouteItemMapper.updateById(item); |
| | | } |
| | | } else { |
| | | // æ´æ°åè®°å½çæ°æåºä½ç½® |
| | | oldProcessRouteItem.setDragSort(targetPosition); |
| | | processRouteItemMapper.updateById(oldProcessRouteItem); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public String batchDelete(Long id) { |
| | | // æ¥è¯¢è¦å é¤çæ°æ® |
| | | ProcessRouteItem deleteProcessRouteItem = processRouteItemMapper.selectById(id); |
| | | if (deleteProcessRouteItem == null) { |
| | | return "å é¤å¤±è´¥ï¼æªæ¾å°å¯¹åºæ°æ®"; |
| | | } |
| | | Long routeId = deleteProcessRouteItem.getRouteId(); |
| | | // å 餿宿°æ® |
| | | processRouteItemMapper.deleteById(id); |
| | | // æ¥è¯¢è¯¥å·¥èºè·¯çº¿çææå·¥åºå¹¶æç
§é¡ºåºæåº |
| | | List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery() |
| | | .eq(ProcessRouteItem::getRouteId, routeId) |
| | | .orderByAsc(ProcessRouteItem::getDragSort)); |
| | | // éæ°è®¾ç½®æåºå¼ï¼ä½¿åºå·è¿ç» |
| | | for (int i = 0; i < processRouteItems.size(); i++) { |
| | | ProcessRouteItem item = processRouteItems.get(i); |
| | | if (!item.getDragSort().equals(i+1)) { |
| | | item.setDragSort(i+1); |
| | | processRouteItemMapper.updateById(item); |
| | | } |
| | | } |
| | | return "å 餿å"; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.production.dto.ProcessRouteDto; |
| | | import com.ruoyi.production.mapper.ProcessRouteMapper; |
| | | import com.ruoyi.production.pojo.ProcessRoute; |
| | | import com.ruoyi.production.service.ProcessRouteService; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | | @Slf4j |
| | | public class ProcessRouteServiceImpl extends ServiceImpl<ProcessRouteMapper, ProcessRoute> implements ProcessRouteService { |
| | | |
| | | @Autowired |
| | | private ProcessRouteMapper processRouteMapper; |
| | | |
| | | @Override |
| | | public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) { |
| | | |
| | | return processRouteMapper.pageProcessRouteDto(page, processRouteDto); |
| | | } |
| | | |
| | | @Override |
| | | public Integer saveProcessRoute(ProcessRoute processRoute) { |
| | | this.save(processRoute); |
| | | String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | String idStr = String.format("%06d", processRoute.getId()); |
| | | String newProductCode = "GYLX" + dateStr + idStr; |
| | | // æ´æ°æ°æ®åºä¸çproductCode |
| | | processRoute.setProcessRouteCode(newProductCode); |
| | | return processRouteMapper.updateById(processRoute); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.production.dto.ProductBomDto; |
| | | import com.ruoyi.production.dto.ProductProcessDto; |
| | | import com.ruoyi.production.pojo.ProductBom; |
| | | import com.ruoyi.production.mapper.ProductBomMapper; |
| | | import com.ruoyi.production.pojo.ProductProcess; |
| | | import com.ruoyi.production.service.ProductBomService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * BOM主表 æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 09:59:27 |
| | | */ |
| | | @Service |
| | | public class ProductBomServiceImpl extends ServiceImpl<ProductBomMapper, ProductBom> implements ProductBomService { |
| | | |
| | | @Autowired |
| | | private ProductBomMapper productBomMapper; |
| | | |
| | | @Override |
| | | public IPage<ProductBomDto> listPage(Page page, ProductBomDto productBomDto) { |
| | | return productBomMapper.listPage(page,productBomDto); |
| | | } |
| | | |
| | | @Override |
| | | public AjaxResult add(ProductBom productBom) { |
| | | boolean save = productBomMapper.insert(productBom) > 0; |
| | | if (save) { |
| | | // æ ¹æ®idçænoåæ®µï¼GX + 8使°åï¼ä¸è¶³8ä½åé¢è¡¥0ï¼ |
| | | String no = "BM." + String.format("%05d", productBom.getId()); |
| | | productBom.setBomNo(no); |
| | | productBomMapper.updateById(productBom); |
| | | return AjaxResult.success(); |
| | | } |
| | | return AjaxResult.error(); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.production.dto.ProductBomDto; |
| | | import com.ruoyi.production.dto.ProductOrderDto; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.mapper.*; |
| | | import com.ruoyi.production.pojo.*; |
| | | import com.ruoyi.production.service.ProcessRouteService; |
| | | import com.ruoyi.production.service.ProductOrderService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, ProductOrder> implements ProductOrderService { |
| | | |
| | | @Autowired |
| | | private ProductOrderMapper productOrderMapper; |
| | | |
| | | @Autowired |
| | | private ProcessRouteMapper processRouteMapper; |
| | | |
| | | @Autowired |
| | | private ProductProcessRouteMapper productProcessRouteMapper; |
| | | |
| | | @Autowired |
| | | private ProcessRouteItemMapper processRouteItemMapper; |
| | | |
| | | @Autowired |
| | | private ProductProcessRouteItemMapper productProcessRouteItemMapper; |
| | | |
| | | @Autowired |
| | | private ProductWorkOrderMapper productWorkOrderMapper; |
| | | |
| | | |
| | | @Override |
| | | public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) { |
| | | return productOrderMapper.pageProductOrder(page, productOrder); |
| | | } |
| | | |
| | | @Override |
| | | public int bindingRoute(ProductOrder productOrder) { |
| | | //æ°å¢ç产订åä¸çå·¥èºè·¯çº¿ä¸»è¡¨ |
| | | ProcessRoute processRoute = processRouteMapper.selectById(productOrder.getRouteId()); |
| | | ProductProcessRoute productProcessRoute = new ProductProcessRoute(); |
| | | productProcessRoute.setProductModelId(processRoute.getProductModelId()); |
| | | productProcessRoute.setProcessRouteCode(processRoute.getProcessRouteCode()); |
| | | productProcessRoute.setProductOrderId(productOrder.getId()); |
| | | productProcessRoute.setBomId(processRoute.getBomId()); |
| | | productProcessRouteMapper.insert(productProcessRoute); |
| | | //æ°å¢ç产订åä¸çå·¥èºè·¯çº¿å表 |
| | | List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); |
| | | // çæå½åæ¥æçåç¼ï¼å¹´ææ¥ |
| | | String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | for (ProcessRouteItem processRouteItem : processRouteItems) { |
| | | ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); |
| | | productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); |
| | | productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); |
| | | productProcessRouteItem.setProductOrderId(productOrder.getId()); |
| | | productProcessRouteItem.setProductRouteId(productProcessRoute.getId()); |
| | | int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); |
| | | if (insert > 0) { |
| | | // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· |
| | | QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.likeRight("work_order_no", datePrefix) |
| | | .orderByDesc("work_order_no") |
| | | .last("LIMIT 1"); |
| | | ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); |
| | | int sequenceNumber = 1; // é»è®¤åºå· |
| | | if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { |
| | | String lastNo = lastWorkOrder.getWorkOrderNo().toString(); |
| | | if (lastNo.startsWith(datePrefix)) { |
| | | String seqStr = lastNo.substring(datePrefix.length()); |
| | | try { |
| | | sequenceNumber = Integer.parseInt(seqStr) + 1; |
| | | } catch (NumberFormatException e) { |
| | | sequenceNumber = 1; |
| | | } |
| | | } |
| | | } |
| | | // çæå®æ´çå·¥åå· |
| | | String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber); |
| | | ProductWorkOrder productWorkOrder = new ProductWorkOrder(); |
| | | productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); |
| | | productWorkOrder.setProductOrderId(productOrder.getId()); |
| | | productWorkOrder.setPlanQuantity(productOrder.getQuantity()); |
| | | productWorkOrder.setWorkOrderNo(workOrderNoStr); |
| | | productWorkOrder.setStatus(1); |
| | | productWorkOrderMapper.insert(productWorkOrder); |
| | | } |
| | | } |
| | | return productOrderMapper.updateById(productOrder); |
| | | } |
| | | |
| | | @Override |
| | | public List<ProcessRoute> listProcessRoute(Long productModelId) { |
| | | return productOrderMapper.listProcessRoute(productModelId); |
| | | } |
| | | |
| | | @Override |
| | | public List<ProductStructureDto> listProcessBom(Long orderId) { |
| | | return productOrderMapper.listProcessBom(orderId); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.production.dto.ProductProcessRouteItemDto; |
| | | import com.ruoyi.production.mapper.*; |
| | | import com.ruoyi.production.pojo.*; |
| | | import com.ruoyi.production.service.ProductProcessRouteItemService; |
| | | import com.ruoyi.quality.mapper.QualityInspectMapper; |
| | | import com.ruoyi.quality.pojo.QualityInspect; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.poi.ss.formula.functions.T; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @AllArgsConstructor |
| | | public class ProductProcessRouteItemServiceImpl extends ServiceImpl<ProductProcessRouteItemMapper, ProductProcessRouteItem> implements ProductProcessRouteItemService { |
| | | |
| | | |
| | | private ProductProcessRouteItemMapper productProcessRouteItemMapper; |
| | | |
| | | private ProductionProductMainMapper productionProductMainMapper; |
| | | |
| | | private ProductionProductInputMapper productionProductInputMapper; |
| | | |
| | | private ProductionProductOutputMapper productionProductOutputMapper; |
| | | |
| | | private QualityInspectMapper qualityInspectMapper; |
| | | |
| | | private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; |
| | | |
| | | private ProductWorkOrderMapper productWorkOrderMapper; |
| | | |
| | | private ProductOrderMapper productOrderMapper; |
| | | |
| | | private ProductProcessRouteMapper productProcessRouteMapper; |
| | | |
| | | private SalesLedgerProductMapper salesLedgerProductMapper; |
| | | |
| | | |
| | | @Override |
| | | public List<ProductProcessRouteItemDto> listItem(Long orderId) { |
| | | return productProcessRouteItemMapper.listItem(orderId); |
| | | } |
| | | |
| | | @Override |
| | | public R deleteRouteItem(Long id) { |
| | | Long routeItemId = id; |
| | | try { |
| | | // æ¥è¯¢å·¥å |
| | | ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectOne( |
| | | new LambdaQueryWrapper<ProductWorkOrder>() |
| | | .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId) |
| | | .last("LIMIT 1") |
| | | ); |
| | | if (productWorkOrder == null) { |
| | | throw new RuntimeException("å é¤å¤±è´¥ï¼æªæ¾å°å
³èçç产工å"); |
| | | } |
| | | Long workOrderId = productWorkOrder.getId(); |
| | | Long productOrderId = productWorkOrder.getProductOrderId(); |
| | | // æ¥è¯¢ç产主表 |
| | | List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList( |
| | | new LambdaQueryWrapper<ProductionProductMain>() |
| | | .eq(ProductionProductMain::getWorkOrderId, workOrderId) |
| | | ); |
| | | if (!productionProductMains.isEmpty()) { |
| | | // æ¹éå é¤å表 |
| | | for (ProductionProductMain main : productionProductMains) { |
| | | Long mainId = main.getId(); |
| | | // å 餿å
¥ |
| | | productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>() |
| | | .eq(ProductionProductInput::getProductMainId, mainId)); |
| | | // å é¤äº§åº |
| | | productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>() |
| | | .eq(ProductionProductOutput::getProductMainId, mainId)); |
| | | // å é¤è´¨æ£ |
| | | qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>() |
| | | .eq(QualityInspect::getProductMainId, mainId)); |
| | | } |
| | | } |
| | | // å 餿¥å·¥ï¼çäº§ä¸»è¡¨ï¼ |
| | | productionProductMainMapper.delete(new LambdaQueryWrapper<ProductionProductMain>() |
| | | .eq(ProductionProductMain::getWorkOrderId, workOrderId)); |
| | | // æ¥è¯¢è®¢å + å 餿 ¸ç® |
| | | ProductOrder productOrder = productOrderMapper.selectById(productOrderId); |
| | | if (productOrder != null && productOrder.getSalesLedgerId() != null) { |
| | | salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>() |
| | | .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId())); |
| | | } |
| | | // å é¤å
³èå·¥å |
| | | productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>() |
| | | .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId)); |
| | | |
| | | // å é¤ä¸»è¡¨æ°æ® |
| | | ProductProcessRouteItem deleteProductProcessRouteItem = productProcessRouteItemMapper.selectById(routeItemId); |
| | | Long productRouteId = deleteProductProcessRouteItem.getProductRouteId(); |
| | | // å 餿宿°æ® |
| | | productProcessRouteItemMapper.deleteById(id); |
| | | // æ¥è¯¢è¯¥å·¥èºè·¯çº¿çææå·¥åºå¹¶æç
§é¡ºåºæåº |
| | | List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery() |
| | | .eq(ProductProcessRouteItem::getProductRouteId, productRouteId) |
| | | .orderByAsc(ProductProcessRouteItem::getDragSort)); |
| | | // éæ°è®¾ç½®æåºå¼ï¼ä½¿åºå·è¿ç» |
| | | for (int i = 0; i < productProcessRouteItems.size(); i++) { |
| | | ProductProcessRouteItem item = productProcessRouteItems.get(i); |
| | | if (!item.getDragSort().equals(i + 1)) { |
| | | item.setDragSort(i + 1); |
| | | productProcessRouteItemMapper.updateById(item); |
| | | } |
| | | } |
| | | return R.ok(); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException("å é¤ç产工èºè·¯çº¿å¤±è´¥ï¼" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public R addRouteItem(ProductProcessRouteItem productProcessRouteItem) { |
| | | ProductOrder productOrder = productOrderMapper.selectById(productProcessRouteItem.getProductOrderId()); |
| | | int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); |
| | | // çæå½åæ¥æçåç¼ï¼å¹´ææ¥ |
| | | String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | if (insert > 0) { |
| | | // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· |
| | | QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.likeRight("work_order_no", datePrefix) |
| | | .orderByDesc("work_order_no") |
| | | .last("LIMIT 1"); |
| | | ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); |
| | | int sequenceNumber = 1; // é»è®¤åºå· |
| | | if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { |
| | | String lastNo = lastWorkOrder.getWorkOrderNo().toString(); |
| | | if (lastNo.startsWith(datePrefix)) { |
| | | String seqStr = lastNo.substring(datePrefix.length()); |
| | | try { |
| | | sequenceNumber = Integer.parseInt(seqStr) + 1; |
| | | } catch (NumberFormatException e) { |
| | | sequenceNumber = 1; |
| | | } |
| | | } |
| | | } |
| | | // çæå®æ´çå·¥åå· |
| | | String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber); |
| | | ProductWorkOrder productWorkOrder = new ProductWorkOrder(); |
| | | productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); |
| | | productWorkOrder.setProductOrderId(productProcessRouteItem.getProductOrderId()); |
| | | productWorkOrder.setPlanQuantity(productOrder.getQuantity()); |
| | | productWorkOrder.setWorkOrderNo(workOrderNoStr); |
| | | productWorkOrder.setStatus(1); |
| | | productWorkOrderMapper.insert(productWorkOrder); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public int sortRouteItem(ProductProcessRouteItem productProcessRouteItem) { |
| | | //æ¥è¯¢è¢«æ¹å¨çè¿æ¡æ°æ® |
| | | ProductProcessRouteItem oldProductProcessRouteItem = productProcessRouteItemMapper.selectById(productProcessRouteItem.getId()); |
| | | //æ¥è¯¢è¯¥å·¥èºè·¯çº¿çææå·¥åºå¹¶æç
§é¡ºåºæåº |
| | | List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery() |
| | | .eq(ProductProcessRouteItem::getProductRouteId, oldProductProcessRouteItem.getProductRouteId()) |
| | | .orderByAsc(ProductProcessRouteItem::getDragSort)); |
| | | // è·åç®æ ä½ç½®ï¼ç§»å¨å°ç¬¬å 个ä¹åï¼ |
| | | Integer targetPosition = productProcessRouteItem.getDragSort(); |
| | | if (targetPosition != null && targetPosition >= 0) { |
| | | // ç§»å¨å
ç´ å°æ°çä½ç½® |
| | | productProcessRouteItems.remove(oldProductProcessRouteItem); |
| | | productProcessRouteItems.add(targetPosition-1, oldProductProcessRouteItem); |
| | | // æ´æ°ææåå½±åçæåºå段 |
| | | for (int i = 0; i < productProcessRouteItems.size(); i++) { |
| | | ProductProcessRouteItem item = productProcessRouteItems.get(i); |
| | | if (!item.getId().equals(oldProductProcessRouteItem.getId())) { |
| | | // æ£æ¥æ¯å¦éè¦æ´æ°æåºå¼ |
| | | if (item.getDragSort() != i+1) { |
| | | item.setDragSort(i+1); |
| | | productProcessRouteItemMapper.updateById(item); |
| | | } |
| | | } else { |
| | | // æ´æ°åè®°å½çæ°æåºä½ç½® |
| | | oldProductProcessRouteItem.setDragSort(targetPosition); |
| | | productProcessRouteItemMapper.updateById(oldProductProcessRouteItem); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.ruoyi.production.dto.ProcessRouteDto; |
| | | import com.ruoyi.production.pojo.ProductProcessRoute; |
| | | import com.ruoyi.production.mapper.ProductProcessRouteMapper; |
| | | import com.ruoyi.production.service.ProductProcessRouteService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå
¬å¸ |
| | | * @since 2026-01-15 02:51:09 |
| | | */ |
| | | @Service |
| | | public class ProductProcessRouteServiceImpl extends ServiceImpl<ProductProcessRouteMapper, ProductProcessRoute> implements ProductProcessRouteService { |
| | | |
| | | @Autowired |
| | | private ProductProcessRouteMapper productProcessRouteMapper; |
| | | |
| | | @Override |
| | | public ProcessRouteDto listMain(Long orderId) { |
| | | return productProcessRouteMapper.listMain(orderId); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.pojo.Customer; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.production.dto.ProductProcessDto; |
| | | import com.ruoyi.production.mapper.ProductProcessMapper; |
| | | import com.ruoyi.production.pojo.ProductProcess; |
| | | import com.ruoyi.production.service.ProductProcessService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | public class ProductProcessServiceImpl extends ServiceImpl<ProductProcessMapper, ProductProcess> implements ProductProcessService { |
| | | @Autowired |
| | | private ProductProcessMapper productProcessMapper; |
| | | |
| | | @Override |
| | | public IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto) { |
| | | return productProcessMapper.listPage(page, productProcessDto); |
| | | } |
| | | |
| | | @Override |
| | | public AjaxResult add(ProductProcessDto productProcessDto) { |
| | | ProductProcess productProcess = new ProductProcess(); |
| | | BeanUtils.copyProperties(productProcessDto,productProcess); |
| | | boolean save = productProcessMapper.insert(productProcess) > 0; |
| | | if (save && ObjectUtils.isNotNull(productProcessDto.getNo())) { |
| | | // æ ¹æ®idçænoåæ®µï¼GX + 8使°åï¼ä¸è¶³8ä½åé¢è¡¥0ï¼ |
| | | String no = "GX" + String.format("%08d", productProcess.getId()); |
| | | productProcess.setNo(no); |
| | | |
| | | productProcessMapper.updateById(productProcess); |
| | | return AjaxResult.success(); |
| | | } |
| | | return AjaxResult.error(); |
| | | } |
| | | |
| | | @Override |
| | | public AjaxResult importData(MultipartFile file) { |
| | | try { |
| | | ExcelUtil<ProductProcess> util = new ExcelUtil<ProductProcess>(ProductProcess.class); |
| | | List<ProductProcess> productProcessList = util.importExcel(file.getInputStream()); |
| | | if(CollectionUtils.isEmpty(productProcessList)){ |
| | | return AjaxResult.warn("模æ¿é误æå¯¼å
¥æ°æ®ä¸ºç©º"); |
| | | } |
| | | this.saveOrUpdateBatch(productProcessList); |
| | | return AjaxResult.success(true); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return AjaxResult.error("导å
¥å¤±è´¥"); |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.dto.ProductModelDto; |
| | | import com.ruoyi.basic.dto.ProductTreeDto; |
| | | import com.ruoyi.basic.mapper.ProductMapper; |
| | | import com.ruoyi.basic.mapper.ProductModelMapper; |
| | | import com.ruoyi.basic.pojo.Product; |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.mapper.ProductBomMapper; |
| | | import com.ruoyi.production.mapper.ProductStructureMapper; |
| | | import com.ruoyi.production.pojo.ProductStructure; |
| | | import com.ruoyi.production.service.ProductStructureService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | @RequiredArgsConstructor |
| | | @Slf4j |
| | | public class ProductStructureServiceImpl extends ServiceImpl<ProductStructureMapper, ProductStructure> implements ProductStructureService { |
| | | |
| | | @Autowired |
| | | private ProductStructureMapper productStructureMapper; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public Boolean addProductStructureDto(ProductStructureDto productStructureDto) { |
| | | this.remove(new QueryWrapper<ProductStructure>().lambda().eq(ProductStructure::getBomId, productStructureDto.getBomId())); |
| | | productStructureDto.getProductStructureList().forEach(productStructure -> { |
| | | productStructure.setBomId(productStructureDto.getBomId()); |
| | | }); |
| | | return this.saveBatch(productStructureDto.getProductStructureList()); |
| | | } |
| | | |
| | | @Override |
| | | public List<ProductStructureDto> listBybomId(Long bomId) { |
| | | List<ProductStructureDto> tree = productStructureMapper.listBybomId(bomId); |
| | | return tree; |
| | | |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.production.dto.ProductWorkOrderDto; |
| | | import com.ruoyi.production.mapper.ProductWorkOrderMapper; |
| | | import com.ruoyi.production.pojo.ProductWorkOrder; |
| | | import com.ruoyi.production.service.ProductWorkOrderService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public class ProductWorkOrderServiceImpl extends ServiceImpl<ProductWorkOrderMapper, ProductWorkOrder> implements ProductWorkOrderService { |
| | | |
| | | private ProductWorkOrderMapper productWorkOrdermapper; |
| | | |
| | | @Override |
| | | public IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) { |
| | | return productWorkOrdermapper.pageProductWorkOrder(page, productWorkOrder); |
| | | } |
| | | |
| | | @Override |
| | | public int updateProductWorkOrder(ProductWorkOrderDto productWorkOrderDto) { |
| | | return productWorkOrdermapper.updateById(productWorkOrderDto); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.production.dto.ProductionProductInputDto; |
| | | import com.ruoyi.production.mapper.ProductionProductInputMapper; |
| | | import com.ruoyi.production.pojo.ProductionProductInput; |
| | | import com.ruoyi.production.service.ProductionProductInputService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class ProductionProductInputServiceImpl extends ServiceImpl<ProductionProductInputMapper, ProductionProductInput> implements ProductionProductInputService { |
| | | @Autowired |
| | | private ProductionProductInputMapper productionProductInputMapper; |
| | | |
| | | @Override |
| | | public IPage<ProductionProductInputDto> listPageProductionProductInputDto(Page page, ProductionProductInputDto productionProductInputDto) { |
| | | return productionProductInputMapper.listPageProductionProductInputDto(page, productionProductInputDto); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.mapper.ProductMapper; |
| | | import com.ruoyi.basic.mapper.ProductModelMapper; |
| | | import com.ruoyi.basic.pojo.Product; |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.bean.BeanUtils; |
| | | import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; |
| | | import com.ruoyi.procurementrecord.utils.StockUtils; |
| | | import com.ruoyi.production.controller.ProductWorkOrderController; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.dto.ProductionProductMainDto; |
| | | import com.ruoyi.production.mapper.*; |
| | | import com.ruoyi.production.pojo.*; |
| | | import com.ruoyi.production.service.ProductionProductMainService; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.quality.mapper.QualityInspectMapper; |
| | | import com.ruoyi.quality.mapper.QualityInspectParamMapper; |
| | | import com.ruoyi.quality.mapper.QualityTestStandardMapper; |
| | | import com.ruoyi.quality.pojo.QualityInspect; |
| | | import com.ruoyi.quality.pojo.QualityInspectParam; |
| | | import com.ruoyi.quality.pojo.QualityTestStandard; |
| | | import io.swagger.models.auth.In; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import com.ruoyi.production.mapper.ProductionProductMainMapper; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService { |
| | | |
| | | private final ProcurementRecordOutMapper procurementRecordOutMapper; |
| | | private ProductionProductMainMapper productionProductMainMapper; |
| | | |
| | | private ProductWorkOrderController productWorkOrderController; |
| | | |
| | | private ProductWorkOrderMapper productWorkOrderMapper; |
| | | |
| | | private ProductProcessRouteItemMapper productProcessRouteItemMapper; |
| | | |
| | | private ProductionProductOutputMapper productionProductOutputMapper; |
| | | |
| | | private ProcessRouteItemMapper processRouteItemMapper; |
| | | |
| | | private ProductModelMapper productModelMapper; |
| | | |
| | | private QualityInspectMapper qualityInspectMapper; |
| | | |
| | | private ProductProcessMapper productProcessMapper; |
| | | |
| | | private ProductMapper productMapper; |
| | | |
| | | private QualityTestStandardMapper qualityTestStandardMapper; |
| | | |
| | | private QualityInspectParamMapper qualityInspectParamMapper; |
| | | |
| | | private ProductStructureMapper productStructureMapper; |
| | | |
| | | private ProductionProductInputMapper productionProductInputMapper; |
| | | |
| | | private ProductOrderMapper productOrderMapper; |
| | | |
| | | private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; |
| | | |
| | | private StockUtils stockUtils; |
| | | |
| | | |
| | | @Override |
| | | public IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto) { |
| | | return productionProductMainMapper.listPageProductionProductMainDto(page, productionProductMainDto); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Boolean addProductMain(ProductionProductMainDto dto) { |
| | | if (dto == null) { |
| | | throw new RuntimeException("åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | SysUser user = SecurityUtils.getLoginUser().getUser(); |
| | | |
| | | |
| | | // æ°å¢é»è¾ |
| | | ProductionProductMain productionProductMain = new ProductionProductMain(); |
| | | ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(dto.getProductProcessRouteItemId()); |
| | | if (productProcessRouteItem == null) { |
| | | throw new RuntimeException("å·¥èºè·¯çº¿é¡¹ä¸åå¨"); |
| | | } |
| | | |
| | | String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | |
| | | QueryWrapper<ProductionProductMain> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.select("MAX(product_no) as maxNo") |
| | | .likeRight("product_no", datePrefix); |
| | | |
| | | List<Map<String, Object>> resultList = productionProductMainMapper.selectMaps(queryWrapper); |
| | | |
| | | int sequenceNumber = 1; |
| | | if (resultList != null && !resultList.isEmpty()) { |
| | | Map<String, Object> result = resultList.get(0); |
| | | |
| | | if (result != null) { |
| | | Object maxNoObj = result.get("maxNo"); |
| | | if (maxNoObj != null) { |
| | | String lastNo = maxNoObj.toString(); |
| | | System.out.println("lastNo: " + lastNo); |
| | | |
| | | if (lastNo.startsWith(datePrefix)) { |
| | | try { |
| | | String seqStr = lastNo.substring(datePrefix.length()); |
| | | sequenceNumber = Integer.parseInt(seqStr) + 1; |
| | | } catch (NumberFormatException e) { |
| | | sequenceNumber = 1; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | String productNo = String.format("%s%03d", datePrefix, sequenceNumber); |
| | | productionProductMain.setProductNo(productNo); |
| | | productionProductMain.setUserId(user.getUserId()); |
| | | productionProductMain.setProductProcessRouteItemId(dto.getProductProcessRouteItemId()); |
| | | productionProductMain.setWorkOrderId(dto.getWorkOrderId()); |
| | | productionProductMain.setStatus(0); |
| | | // æ·»å æ¥å·¥ä¸»è¡¨ |
| | | int insert = productionProductMainMapper.insert(productionProductMain); |
| | | |
| | | //æ´æ°å·¥å |
| | | if (insert > 0) { |
| | | Map<String, Object> params = new HashMap<>(); |
| | | params.put("workOrderId", dto.getWorkOrderId()); |
| | | params.put("deductQuantity", dto.getQuantity()); |
| | | |
| | | productWorkOrderMapper.updatePlanQuantity(params); |
| | | } |
| | | ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId()); |
| | | ProductModel productModel = productProcessRouteItem.getProductModelId() != null ? |
| | | productModelMapper.selectById(productProcessRouteItem.getProductModelId()) : null; |
| | | |
| | | if (productModel != null) { |
| | | Product product = productMapper.selectById(productModel.getProductId()); |
| | | int inspectType = "ç»è£
".equals(productProcess.getName()) ? 2 : 1; |
| | | |
| | | QualityInspect qualityInspect = new QualityInspect(); |
| | | qualityInspect.setProductId(product.getId()); |
| | | qualityInspect.setProductName(product.getProductName()); |
| | | qualityInspect.setModel(productModel.getModel()); |
| | | qualityInspect.setUnit(productModel.getUnit()); |
| | | qualityInspect.setQuantity(dto.getQuantity()); |
| | | qualityInspect.setProcess(productProcess.getName()); |
| | | qualityInspect.setInspectState(0); |
| | | qualityInspect.setInspectType(inspectType); |
| | | qualityInspect.setProductMainId(productionProductMain.getId()); |
| | | qualityInspect.setProductModelId(productModel.getId()); |
| | | qualityInspectMapper.insert(qualityInspect); |
| | | |
| | | qualityTestStandardMapper.selectList( |
| | | new LambdaQueryWrapper<QualityTestStandard>() |
| | | .eq(QualityTestStandard::getProductId, product.getId()) |
| | | ).forEach(standard -> { |
| | | QualityInspectParam param = new QualityInspectParam(); |
| | | BeanUtils.copyProperties(standard, param); |
| | | param.setId(null); |
| | | param.setInspectId(qualityInspect.getId()); |
| | | qualityInspectParamMapper.insert(param); |
| | | }); |
| | | } |
| | | // æ·»å æå
¥ |
| | | if (productModel != null) { |
| | | List<ProductStructureDto> productStructureDtos = productStructureMapper.listByproductModelId(productModel.getId()); |
| | | for (ProductStructureDto productStructureDto : productStructureDtos) { |
| | | ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId()); |
| | | Product product = productMapper.selectById(productModel1.getProductId()); |
| | | BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity"); |
| | | if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) { |
| | | throw new RuntimeException(product.getProductName() + "åºå为0"); |
| | | } |
| | | if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) { |
| | | throw new RuntimeException(product.getProductName() + "åºåä¸è¶³"); |
| | | } |
| | | ProductionProductInput productionProductInput = new ProductionProductInput(); |
| | | productionProductInput.setProductModelId(productStructureDto.getProductModelId()); |
| | | productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())); |
| | | productionProductInput.setProductMainId(productionProductMain.getId()); |
| | | productionProductInputMapper.insert(productionProductInput); |
| | | |
| | | |
| | | DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMdd"); |
| | | LocalDate now = LocalDate.now(); |
| | | ProcurementRecordOut procurementRecordOut1 = procurementRecordOutMapper.selectCode(dateFormat.format(now)); |
| | | Long aLong = procurementRecordOut1 == null ? 1L : Long.valueOf(procurementRecordOut1.getCode().split("LS"+dateFormat.format(now))[1]); |
| | | //æ·»å åºåºå¤ç |
| | | ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder() |
| | | .procurementRecordStorageId(0) |
| | | .code("LS" + dateFormat.format(now) + String.format("%03d", aLong + 1)) |
| | | .salesLedgerProductId(0) |
| | | .inboundBatches(aLong.equals(0L) ? "第1æ¹æ¬¡" : "第"+ (aLong + 1) + "æ¹æ¬¡") |
| | | .inboundNum(productionProductInput.getQuantity()) |
| | | .type(4) |
| | | .createTime(LocalDateTime.now()) |
| | | .createUser(user.getUserId()) |
| | | .createBy(user.getNickName()) |
| | | .updateUser(user.getUserId()) |
| | | .updateTime(LocalDateTime.now()) |
| | | .productModelId(productModel1.getId()); |
| | | procurementRecordOutMapper.insert(procurementRecordOut.build()); |
| | | } |
| | | } |
| | | |
| | | // æ·»å äº§åº |
| | | ProductionProductOutput productionProductOutput = new ProductionProductOutput(); |
| | | productionProductOutput.setProductMainId(productionProductMain.getId()); |
| | | productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId()); |
| | | productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO); |
| | | productionProductOutputMapper.insert(productionProductOutput); |
| | | |
| | | // è·åç产订å |
| | | ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId()); |
| | | List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList(new QueryWrapper<ProductionProductMain>().lambda().eq(ProductionProductMain::getWorkOrderId, dto.getWorkOrderId())); |
| | | |
| | | if (productionProductMains.isEmpty()) { |
| | | productWorkOrder.setActualStartTime(LocalDate.now()); |
| | | } |
| | | ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId()); |
| | | if (productOrder == null) { |
| | | throw new RuntimeException("ç产订åä¸åå¨"); |
| | | } |
| | | // æ·»å çäº§æ ¸ç® |
| | | SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder() |
| | | .salesLedgerWorkId(productionProductMain.getId()) |
| | | .salesLedgerSchedulingId(0L) |
| | | .salesLedgerId(productOrder.getSalesLedgerId()) |
| | | .salesLedgerProductId(productOrder.getProductModelId()) |
| | | .schedulingUserId(user.getUserId()) |
| | | .schedulingUserName(user.getNickName()) |
| | | .finishedNum(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO) |
| | | .workHours(productProcess.getSalaryQuota()) |
| | | .process(productProcess.getName()) |
| | | .schedulingDate(LocalDate.now()) |
| | | .tenantId(dto.getTenantId()) |
| | | .build(); |
| | | salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public Boolean removeProductMain(ProductionProductMainDto dto) { |
| | | Long id = dto.getId(); |
| | | |
| | | // æ´æ°å·¥å |
| | | productWorkOrderMapper.rollbackPlanQuantity(id); |
| | | // å é¤è´¨æ£åæ°åè´¨æ£è®°å½ |
| | | qualityInspectMapper.selectList( |
| | | new LambdaQueryWrapper<QualityInspect>() |
| | | .eq(QualityInspect::getProductMainId, id) |
| | | ).forEach(q -> { |
| | | qualityInspectParamMapper.delete( |
| | | new LambdaQueryWrapper<QualityInspectParam>() |
| | | .eq(QualityInspectParam::getInspectId, q.getId())); |
| | | qualityInspectMapper.deleteById(q.getId()); |
| | | }); |
| | | |
| | | // å é¤äº§åºè®°å½ |
| | | productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>() |
| | | .eq(ProductionProductOutput::getProductMainId, id) |
| | | ); |
| | | |
| | | // å é¤å
³èçæ ¸ç®æ°æ® |
| | | salesLedgerProductionAccountingMapper.delete( |
| | | new LambdaQueryWrapper<SalesLedgerProductionAccounting>() |
| | | .eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, id) |
| | | ); |
| | | |
| | | // å é¤ä¸»è¡¨ |
| | | return productionProductMainMapper.deleteById(id) > 0; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.production.dto.ProductionProductOutputDto; |
| | | import com.ruoyi.production.mapper.ProductionProductOutputMapper; |
| | | import com.ruoyi.production.pojo.ProductionProductOutput; |
| | | import com.ruoyi.production.service.ProductionProductOutputService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class ProductionProductOutputServiceImpl extends ServiceImpl<ProductionProductOutputMapper, ProductionProductOutput> implements ProductionProductOutputService { |
| | | @Autowired |
| | | private ProductionProductOutputMapper productionProductOutputMapper; |
| | | |
| | | @Override |
| | | public IPage<ProductionProductOutputDto> listPageProductionProductOutputDto(Page page, ProductionProductOutputDto productionProductOutputDto) { |
| | | return productionProductOutputMapper.listPageProductionProductOutputDto(page, productionProductOutputDto); |
| | | } |
| | | } |
| | |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/7/21 14:41 |
| | |
| | | @Override |
| | | public IPage<SalesLedgerProductionAccountingDto> listPage(Page page, SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto) { |
| | | IPage<SalesLedgerProductionAccountingDto> list = salesLedgerProductionAccountingMapper.listPage(page, salesLedgerProductionAccountingDto); |
| | | list.getRecords().forEach(item -> { |
| | | String[] split = item.getSpecificationModel().split("\\*"); |
| | | if(split.length == 2 && isNumeric(split[1])){ |
| | | // 计ç®å·¥èµ = å·¥æ¶å®é¢ * æ°é * è§æ ¼ |
| | | item.setWages(item.getWages().multiply(new BigDecimal(split[1]))); |
| | | } |
| | | }); |
| | | return list; |
| | | } |
| | | |
| | | public static boolean isNumeric(String str) { |
| | | if (str == null || str.isEmpty()) { |
| | | return false; |
| | | } |
| | | // éååç¬¦ä¸²çæ¯ä¸ªåç¬¦ï¼æ£æ¥æ¯å¦ä¸ºæ°å |
| | | for (int i = 0; i < str.length(); i++) { |
| | | if (!Character.isDigit(str.charAt(i))) { |
| | | return false; |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public void export(HttpServletResponse response) { |
| | | Page page = new Page(-1,-1); |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto; |
| | | import com.ruoyi.framework.security.LoginUser; |
| | | import com.ruoyi.production.dto.*; |
| | | import com.ruoyi.production.mapper.SalesLedgerSchedulingMapper; |
| | | import com.ruoyi.production.mapper.SalesLedgerWorkMapper; |
| | | import com.ruoyi.production.mapper.SpeculativeTradingInfoMapper; |
| | | import com.ruoyi.production.pojo.SalesLedgerScheduling; |
| | | import com.ruoyi.production.pojo.SalesLedgerWork; |
| | | import com.ruoyi.production.pojo.SpeculativeTradingInfo; |
| | | import com.ruoyi.production.service.SalesLedgerSchedulingService; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | | import com.ruoyi.sales.mapper.LossMapper; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | | import com.ruoyi.sales.pojo.Loss; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.concurrent.atomic.AtomicReference; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public IPage<SalesLedgerSchedulingDto> listPage(Page page, SalesLedgerSchedulingDto salesLedgerSchedulingDto) { |
| | | IPage<SalesLedgerSchedulingDto> list = salesLedgerSchedulingMapper.listPage(page, salesLedgerSchedulingDto); |
| | | if(list.getTotal() == 0){ |
| | | if(CollectionUtils.isEmpty(list.getRecords())){ |
| | | return list; |
| | | } |
| | | Set<Long> collect = list.getRecords().stream().map(SalesLedgerSchedulingDto::getSalesLedgerProductId).collect(Collectors.toSet()); |
| | |
| | | .filter(j -> j.getSalesLedgerProductId().equals(i.getSalesLedgerProductId())) |
| | | .map(SalesLedgerWork::getFinishedNum) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add)); |
| | | |
| | | // 计ç®ç产æ»é = è§æ ¼ * æ°é / 1000 |
| | | String[] split = i.getSpecificationModel().split("\\*"); |
| | | if(split.length == 2 && isNumeric(split[0]) && isNumeric(split[1])){ |
| | | BigDecimal multiply = new BigDecimal(split[0]) |
| | | .multiply(new BigDecimal(split[1]) |
| | | .multiply(i.getQuantity()).divide(new BigDecimal(1000),2, RoundingMode.CEILING)); |
| | | i.setTotalProduction(multiply); |
| | | } |
| | | |
| | | // ç¶æ = æ°éåå®å·¥æ°éæ¯è¾ |
| | | if(i.getSuccessNum().compareTo(new BigDecimal(0)) == 0){ |
| | | i.setStatus("æªå¼å§"); |
| | |
| | | }else{ |
| | | i.setStatus("ç产ä¸"); |
| | | } |
| | | // è¿åº¦ä¿ç两ä½å°æ° |
| | | i.setProgress(i.getSchedulingNum().divide(i.getQuantity(),4,RoundingMode.CEILING).multiply(new BigDecimal(100))); |
| | | |
| | | }); |
| | | return list; |
| | | } |
| | | |
| | | public static boolean isNumeric(String str) { |
| | | if (str == null || str.isEmpty()) { |
| | | return false; |
| | | } |
| | | // éååç¬¦ä¸²çæ¯ä¸ªåç¬¦ï¼æ£æ¥æ¯å¦ä¸ºæ°å |
| | | for (int i = 0; i < str.length(); i++) { |
| | | if (!Character.isDigit(str.charAt(i))) { |
| | | return false; |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | private final SysUserMapper sysUserMapper; |
| | | |
| | | private final SpeculativeTradingInfoMapper speculativeTradingInfoMapper; |
| | | |
| | | @Override |
| | | public int productionDispatch(ProductionDispatchAddDto productionDispatchAddDto) { |
| | | SysUser sysUser = sysUserMapper.selectUserById(productionDispatchAddDto.getSchedulingUserId()); |
| | | if(sysUser == null) throw new RuntimeException("æäº§äººä¸åå¨"); |
| | | SalesLedgerScheduling salesLedgerScheduling = SalesLedgerScheduling.builder() |
| | | .salesLedgerId(productionDispatchAddDto.getSalesLedgerId()) |
| | | .salesLedgerProductId(productionDispatchAddDto.getSalesLedgerProductId()) |
| | | .schedulingUserId(productionDispatchAddDto.getSchedulingUserId()) |
| | | .schedulingUserName(sysUser.getNickName()) |
| | | .schedulingNum(productionDispatchAddDto.getSchedulingNum()) |
| | | .schedulingDate(LocalDate.parse(productionDispatchAddDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE)) |
| | | .status(1) |
| | | .build(); |
| | | return salesLedgerSchedulingMapper.insert(salesLedgerScheduling); |
| | | public String productionDispatch(List<ProductionDispatchAddDto> productionDispatchAddDtoList) { |
| | | int i = 0; |
| | | int successNum = 0; |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | for (ProductionDispatchAddDto productionDispatchAddDto : productionDispatchAddDtoList) { |
| | | SysUser sysUser = sysUserMapper.selectUserById(productionDispatchAddDto.getSchedulingUserId() == null ? loginUser.getUser().getUserId() : productionDispatchAddDto.getSchedulingUserId()); |
| | | if(sysUser == null){ |
| | | i++; |
| | | continue; |
| | | } |
| | | // è·å空ä½çæº |
| | | String[] split = productionDispatchAddDto.getSpeculativeTradingName().split(","); |
| | | if(split != null && split.length == 0){ |
| | | i++; |
| | | continue; |
| | | } |
| | | List<SpeculativeTradingInfo> speculativeTradingInfos = speculativeTradingInfoMapper.selectList(new LambdaQueryWrapper<SpeculativeTradingInfo>() |
| | | .in(SpeculativeTradingInfo::getName, Arrays.asList(split)) |
| | | .orderByAsc(SpeculativeTradingInfo::getSort)); |
| | | if(CollectionUtils.isEmpty(speculativeTradingInfos)){ |
| | | i++; |
| | | continue; |
| | | } |
| | | AtomicReference<String> name = new AtomicReference<>(""); //éè¦ç»å®ççæº |
| | | //éè¿è§æ ¼åå·åæäº§æ°éè®¡ç®æ¬æ¬¡ç产产é |
| | | String[] split1 = productionDispatchAddDto.getSpecificationModel().split("\\*"); |
| | | if(split1.length != 2){ |
| | | i++; |
| | | continue; |
| | | } |
| | | // æ¬æ¬¡ç产产é |
| | | BigDecimal productionNum = new BigDecimal(split1[0]) |
| | | .multiply(new BigDecimal(split1[1]).multiply(productionDispatchAddDto.getSchedulingNum())); |
| | | // å¤ä¸ªçæºæ
åµ |
| | | if(speculativeTradingInfos.size() > 1){ |
| | | for (SpeculativeTradingInfo speculativeTradingInfo : speculativeTradingInfos) { |
| | | // è·åè¯¥çæºæ£å¨æäº§é |
| | | BigDecimal schedulingNumBySpeculativeTradingName = getSchedulingNumBySpeculativeTradingName(speculativeTradingInfo.getName()); |
| | | // å¦æè¯¥çæºæ»é(åä½kgéè¦ä¹1000) - æ£å¨æäº§é >=æ¬æ¬¡ç产产éå°±åé
æ¤çæº |
| | | if(speculativeTradingInfo.getWorkLoad().multiply(new BigDecimal(1000)).subtract(schedulingNumBySpeculativeTradingName).compareTo(productionNum) >= 0){ |
| | | name.set(speculativeTradingInfo.getName()); |
| | | break; |
| | | } |
| | | } |
| | | }else{ |
| | | // åä¸ªçæºæ
åµ |
| | | name.set(speculativeTradingInfos.get(0).getName()); |
| | | } |
| | | if(name.get().isEmpty()){ |
| | | i++; |
| | | continue; |
| | | } |
| | | String productionLine = ""; |
| | | switch (name.get()){ |
| | | case "çæº1": |
| | | productionLine = "产线1"; |
| | | break; |
| | | case "çæº2": |
| | | productionLine = "产线2"; |
| | | break; |
| | | case "çæº3": |
| | | productionLine = "产线3"; |
| | | break; |
| | | case "çæº4": |
| | | productionLine = "产线4"; |
| | | break; |
| | | } |
| | | SalesLedgerScheduling salesLedgerScheduling = SalesLedgerScheduling.builder() |
| | | .salesLedgerId(productionDispatchAddDto.getSalesLedgerId()) |
| | | .salesLedgerProductId(productionDispatchAddDto.getSalesLedgerProductId()) |
| | | .speculativeTradingName(name.get()) |
| | | .productionLine(productionLine) |
| | | .schedulingUserId(sysUser.getUserId()) |
| | | .schedulingUserName(sysUser.getNickName()) |
| | | .schedulingNum(productionDispatchAddDto.getSchedulingNum()) |
| | | .schedulingDate(productionDispatchAddDto.getSchedulingDate() == null ? LocalDate.now() : LocalDate.parse(productionDispatchAddDto.getSchedulingDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"))) |
| | | .status(1) |
| | | .build(); |
| | | salesLedgerSchedulingMapper.insert(salesLedgerScheduling); |
| | | successNum++; |
| | | } |
| | | |
| | | return "派工æåæ°é" + successNum + "ï¼å¤±è´¥æ°é" + i; |
| | | } |
| | | |
| | | private final SalesLedgerProductMapper salesLedgerProductMapper; |
| | | |
| | | /** |
| | | *éè¿çæºåç§°è·åå½å¤©æ£å¨æäº§é |
| | | * @return |
| | | */ |
| | | public BigDecimal getSchedulingNumBySpeculativeTradingName(String speculativeTradingName){ |
| | | LambdaQueryWrapper<SalesLedgerScheduling> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SalesLedgerScheduling::getSpeculativeTradingName, speculativeTradingName) |
| | | .eq(SalesLedgerScheduling::getSchedulingDate, LocalDate.now()); |
| | | List<SalesLedgerScheduling> salesLedgerSchedulings = salesLedgerSchedulingMapper.selectList(queryWrapper); |
| | | if(CollectionUtils.isEmpty(salesLedgerSchedulings)){ |
| | | return BigDecimal.ZERO; |
| | | } |
| | | List<Long> collect = salesLedgerSchedulings.stream().map(SalesLedgerScheduling::getSalesLedgerProductId).collect(Collectors.toList()); |
| | | List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<SalesLedgerProduct>() |
| | | .in(SalesLedgerProduct::getId, collect)); |
| | | if(CollectionUtils.isEmpty(salesLedgerProducts)) return BigDecimal.ZERO; |
| | | AtomicInteger totalNum = new AtomicInteger(0); //æ»æ° |
| | | salesLedgerSchedulings.forEach(item ->{ |
| | | List<SalesLedgerProduct> collect1 = salesLedgerProducts.stream() |
| | | .filter(j -> j.getId().equals(item.getSalesLedgerProductId())) |
| | | .collect(Collectors.toList()); |
| | | if(!CollectionUtils.isEmpty(collect1)){ |
| | | SalesLedgerProduct salesLedgerProduct = collect1.get(0); |
| | | // æ ¹æ®äº§åè§æ ¼ * æäº§æ°é è·åæ¬æ¬¡ç产产é并累计 |
| | | String[] split = salesLedgerProduct.getSpecificationModel().split("\\*"); |
| | | BigDecimal productionNum = new BigDecimal(split[0]) |
| | | .multiply(new BigDecimal(split[1]).multiply(item.getSchedulingNum())); |
| | | totalNum.addAndGet(productionNum.intValue()); |
| | | } |
| | | }); |
| | | // éè¦ / æèç |
| | | Loss loss = lossMapper.selectOne(new LambdaQueryWrapper<Loss>().last("limit 1")); |
| | | BigDecimal lossNum = loss == null ? new BigDecimal(6) : loss.getRate(); //没ææèçåé»è®¤ä¸º6 |
| | | |
| | | return new BigDecimal(totalNum.get()).multiply(new BigDecimal(100)).divide(lossNum, 2,RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | private final LossMapper lossMapper; |
| | | |
| | | |
| | | /** |
| | | *éè¿æ¹éçæºåç§°è·åå½å¤©æ£å¨æäº§é |
| | | * @return |
| | | */ |
| | | public BigDecimal getSchedulingNumBySpeculativeTradingNameList(List<String> speculativeTradingName){ |
| | | LambdaQueryWrapper<SalesLedgerScheduling> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SalesLedgerScheduling::getSpeculativeTradingName, speculativeTradingName) |
| | | .eq(SalesLedgerScheduling::getSchedulingDate, LocalDate.now()); |
| | | List<SalesLedgerScheduling> salesLedgerSchedulings = salesLedgerSchedulingMapper.selectList(queryWrapper); |
| | | if(CollectionUtils.isEmpty(salesLedgerSchedulings)){ |
| | | return BigDecimal.ZERO; |
| | | } |
| | | List<Long> collect = salesLedgerSchedulings.stream().map(SalesLedgerScheduling::getSalesLedgerProductId).collect(Collectors.toList()); |
| | | List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<SalesLedgerProduct>() |
| | | .in(SalesLedgerProduct::getId, collect)); |
| | | if(CollectionUtils.isEmpty(salesLedgerProducts)) return BigDecimal.ZERO; |
| | | AtomicInteger totalNum = new AtomicInteger(0); //æ»æ° |
| | | salesLedgerSchedulings.forEach(item ->{ |
| | | List<SalesLedgerProduct> collect1 = salesLedgerProducts.stream() |
| | | .filter(j -> j.getId().equals(item.getSalesLedgerProductId())) |
| | | .collect(Collectors.toList()); |
| | | if(!CollectionUtils.isEmpty(collect1)){ |
| | | SalesLedgerProduct salesLedgerProduct = collect1.get(0); |
| | | // æ ¹æ®äº§åè§æ ¼ * æäº§æ°é è·åæ¬æ¬¡ç产产é并累计 |
| | | String[] split = salesLedgerProduct.getSpecificationModel().split("\\*"); |
| | | BigDecimal productionNum = new BigDecimal(split[0]) |
| | | .multiply(new BigDecimal(split[1]).multiply(item.getSchedulingNum())); |
| | | totalNum.addAndGet(productionNum.intValue()); |
| | | } |
| | | }); |
| | | return new BigDecimal(totalNum.get()); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<SalesLedgerSchedulingProcessDto> listPageProcess(Page page, SalesLedgerSchedulingProcessDto salesLedgerSchedulingDto) { |
| | | IPage<SalesLedgerSchedulingProcessDto> list = salesLedgerSchedulingMapper.listPageProcess(page, salesLedgerSchedulingDto); |
| | | // Set<Long> collect = list.getRecords().stream().map(SalesLedgerSchedulingProcessDto::getId).collect(Collectors.toSet()); |
| | | // if(CollectionUtils.isEmpty(collect)) return list; |
| | | // LambdaQueryWrapper<SalesLedgerWork> salesLedgerWorkLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | // salesLedgerWorkLambdaQueryWrapper.in(SalesLedgerWork::getSalesLedgerSchedulingId, collect) |
| | | // .ne(SalesLedgerWork::getStatus, 1); |
| | | // List<SalesLedgerWork> salesLedgerWorks = salesLedgerWorkMapper.selectList(salesLedgerWorkLambdaQueryWrapper); |
| | | // list.getRecords().forEach(i -> { |
| | | // // è·å宿æ°é |
| | | // i.setSuccessNum(salesLedgerWorks |
| | | // .stream() |
| | | // .filter(j -> j.getSalesLedgerSchedulingId().equals(i.getId())) |
| | | // .map(SalesLedgerWork::getFinishedNum) |
| | | // .reduce(BigDecimal.ZERO, BigDecimal::add)); |
| | | // }); |
| | | list.getRecords().forEach(i -> { |
| | | // 计ç®ç产æ»é = è§æ ¼ * æ°é / 1000 |
| | | String[] split = i.getSpecificationModel().split("\\*"); |
| | | if(split.length == 2 && isNumeric(split[0]) && isNumeric(split[1])){ |
| | | BigDecimal multiply = new BigDecimal(split[0]) |
| | | .multiply(new BigDecimal(split[1]) |
| | | .multiply(i.getSuccessNum()).divide(new BigDecimal(1000),2, RoundingMode.CEILING)); |
| | | i.setTotalProduction(multiply); |
| | | } |
| | | }); |
| | | return list; |
| | | } |
| | | |
| | |
| | | SysUser sysUser = sysUserMapper.selectUserById(processSchedulingDto.getSchedulingUserId()); |
| | | if(sysUser == null) throw new RuntimeException("æäº§äººä¸åå¨"); |
| | | salesLedgerScheduling.setFinishedNum(salesLedgerScheduling.getFinishedNum().add(processSchedulingDto.getSchedulingNum())); |
| | | LambdaQueryWrapper<SalesLedgerWork> salesLedgerWorkLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | salesLedgerWorkLambdaQueryWrapper.eq(SalesLedgerWork::getSalesLedgerSchedulingId, salesLedgerScheduling.getId()) |
| | | .ne(SalesLedgerWork::getStatus, 1); |
| | | List<SalesLedgerWork> salesLedgerWorks = salesLedgerWorkMapper.selectList(salesLedgerWorkLambdaQueryWrapper); |
| | | // LambdaQueryWrapper<SalesLedgerWork> salesLedgerWorkLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | // salesLedgerWorkLambdaQueryWrapper.eq(SalesLedgerWork::getSalesLedgerSchedulingId, salesLedgerScheduling.getId()) |
| | | // .ne(SalesLedgerWork::getStatus, 1); |
| | | // List<SalesLedgerWork> salesLedgerWorks = salesLedgerWorkMapper.selectList(salesLedgerWorkLambdaQueryWrapper); |
| | | if(salesLedgerScheduling.getSchedulingNum().compareTo(salesLedgerScheduling.getFinishedNum()) < 0){ |
| | | throw new RuntimeException("å½åæäº§æ°é大äºå¾
æäº§æ°éï¼è¯·ä»ç»æ ¸å¯¹ï¼"); |
| | | } |
| | |
| | | SalesLedgerWork.SalesLedgerWorkBuilder salesLedgerWorkBuilder = SalesLedgerWork.builder() |
| | | .salesLedgerSchedulingId(salesLedgerScheduling.getId()) |
| | | .salesLedgerId(salesLedgerScheduling.getSalesLedgerId()) |
| | | .remark(processSchedulingDto.getRemark()) |
| | | .productionLine(processSchedulingDto.getProductionLine()) |
| | | .type(processSchedulingDto.getType()) |
| | | .loss(processSchedulingDto.getLoss()) |
| | | .receive(processSchedulingDto.getReceive()) |
| | | .salesLedgerProductId(salesLedgerScheduling.getSalesLedgerProductId()) |
| | | .schedulingUserId(salesLedgerScheduling.getSchedulingUserId()) |
| | | .schedulingUserName(sysUser.getNickName()) |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.framework.security.LoginUser; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.procurementrecord.dto.Details; |
| | | import com.ruoyi.procurementrecord.dto.ProcurementAddDto; |
| | | import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd; |
| | | import com.ruoyi.procurementrecord.service.impl.ProcurementRecordOutServiceImpl; |
| | | import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl; |
| | | import com.ruoyi.production.dto.ProductionReportDto; |
| | | import com.ruoyi.production.dto.SalesLedgerWorkDto; |
| | | import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper; |
| | |
| | | import com.ruoyi.production.service.SalesLedgerWorkService; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | | import com.ruoyi.sales.mapper.LossMapper; |
| | | import com.ruoyi.sales.pojo.Loss; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | |
| | | private final SysUserMapper sysUserMapper; |
| | | |
| | | private final LossMapper lossMapper; |
| | | |
| | | private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; |
| | | |
| | | @Override |
| | | public IPage<SalesLedgerWorkDto> listPage(Page page, SalesLedgerWorkDto salesLedgerWorkDto) { |
| | | IPage<SalesLedgerWorkDto> iPage = salesLedgerWorkMapper.listPage(page, salesLedgerWorkDto); |
| | | List<Loss> losses = lossMapper.selectList(null); |
| | | if(!CollectionUtils.isEmpty(losses)){ |
| | | iPage.getRecords().forEach(item -> { |
| | | String[] split = item.getSpecificationModel().split("\\*"); |
| | | if(split.length == 2 && isNumeric(split[1]) && isNumeric(split[0])){ |
| | | // è®¡ç®æèï¼100000代表 æèç 100 å åä½è½¬æ¢ç1000ï¼ |
| | | BigDecimal divide = new BigDecimal(split[0]) |
| | | .multiply(new BigDecimal(split[1])) |
| | | .multiply(item.getFinishedNum()) |
| | | .multiply(losses.get(0).getRate()) |
| | | .divide(new BigDecimal(100000), 2, RoundingMode.HALF_UP); |
| | | item.setLoss(divide.toString()); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | return iPage; |
| | | } |
| | | |
| | | public static boolean isNumeric(String str) { |
| | | if (str == null || str.isEmpty()) { |
| | | return false; |
| | | } |
| | | // éååç¬¦ä¸²çæ¯ä¸ªåç¬¦ï¼æ£æ¥æ¯å¦ä¸ºæ°å |
| | | for (int i = 0; i < str.length(); i++) { |
| | | if (!Character.isDigit(str.charAt(i))) { |
| | | return false; |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | private final ProcurementRecordServiceImpl procurementRecordService; |
| | | |
| | | @Override |
| | | public int productionReport(ProductionReportDto productionReportDto) { |
| | |
| | | .salesLedgerWorkId(salesLedgerWork.getId()) |
| | | .salesLedgerSchedulingId(salesLedgerWork.getSalesLedgerSchedulingId()) |
| | | .salesLedgerId(salesLedgerWork.getSalesLedgerId()) |
| | | .salesLedgerProductId(salesLedgerWork.getSalesLedgerProductId()) |
| | | .salesLedgerProductId((long)salesLedgerWork.getSalesLedgerProductId()) |
| | | .schedulingUserId(sysUser.getUserId()) |
| | | .schedulingUserName(sysUser.getNickName()) |
| | | .finishedNum(productionReportDto.getFinishedNum()) |
| | |
| | | .process(salesLedgerWork.getProcess()) |
| | | .schedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE)); |
| | | salesLedgerProductionAccountingMapper.insert(builder.build()); |
| | | // ç产æ¥å·¥æå -> å
¥åº |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto(); |
| | | procurementRecordOutAdd.setType(2); |
| | | procurementRecordOutAdd.setTypeName("ç产å
¥åº"); |
| | | procurementRecordOutAdd.setNickName(loginUser.getNickName()); |
| | | List<Details> details = new ArrayList<>(); |
| | | Details details1 = new Details(); |
| | | details1.setInboundQuantity(productionReportDto.getFinishedNum()); |
| | | details1.setId(Integer.parseInt(salesLedgerWork.getSalesLedgerProductId().toString())); |
| | | details1.setUnitPrice(productionReportDto.getUnitPrice()); |
| | | details1.setTotalPrice(productionReportDto.getTotalPrice()); |
| | | details.add(details1); |
| | | procurementRecordOutAdd.setDetails(details); |
| | | procurementRecordService.add(procurementRecordOutAdd); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | |
| | | @PostConstruct
|
| | | public void init() throws SchedulerException, TaskException
|
| | | {
|
| | | scheduler.clear();
|
| | | // scheduler.clear();
|
| | | List<SysJob> jobList = jobMapper.selectJobAll();
|
| | | for (SysJob job : jobList)
|
| | | {
|
| | |
| | | import javax.servlet.http.HttpServletResponse;
|
| | |
|
| | | import com.ruoyi.project.system.domain.vo.SysUserDeptVo;
|
| | | import com.ruoyi.project.system.mapper.SysUserMapper;
|
| | | import com.ruoyi.project.system.service.*;
|
| | | import org.apache.commons.lang3.ArrayUtils;
|
| | | import org.springframework.beans.factory.annotation.Autowired;
|
| | |
| | | return getDataTable(list);
|
| | | }
|
| | |
|
| | | /**
|
| | | * è·åç¨æ·å表
|
| | | */
|
| | | @PreAuthorize("@ss.hasPermi('system:user:list')")
|
| | | @GetMapping("/listAll")
|
| | | public AjaxResult listAll(SysUser user)
|
| | | {
|
| | | List<SysUser> list = userService.selectUserList(user);
|
| | | return AjaxResult.success(list);
|
| | | }
|
| | |
|
| | | @Log(title = "ç¨æ·ç®¡ç", businessType = BusinessType.EXPORT)
|
| | | @PreAuthorize("@ss.hasPermi('system:user:export')")
|
| | | @PostMapping("/export")
|
| | |
| | | public SysUser selectUserByUserName(String userName);
|
| | |
|
| | | /**
|
| | | * éè¿æµç§°æ¥è¯¢ç¨æ·
|
| | | *
|
| | | * @param nickName ç¨æ·å
|
| | | * @return ç¨æ·å¯¹è±¡ä¿¡æ¯
|
| | | */
|
| | | public SysUser selectUserByNickName(String nickName);
|
| | |
|
| | | /**
|
| | | * éè¿ç¨æ·IDæ¥è¯¢ç¨æ·
|
| | | *
|
| | | * @param userId ç¨æ·ID
|
| | |
| | | package com.ruoyi.purchase.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | |
| | | import com.ruoyi.purchase.dto.PurchaseLedgerDto; |
| | | import com.ruoyi.purchase.pojo.PurchaseLedger; |
| | | import com.ruoyi.purchase.service.IPurchaseLedgerService; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import com.ruoyi.sales.service.ISalesLedgerProductService; |
| | | import com.ruoyi.sales.service.ISalesLedgerService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * éè´å°è´¦Controller |
| | |
| | | @RestController |
| | | @RequestMapping("/purchase/ledger") |
| | | @AllArgsConstructor |
| | | @Api(tags = "111") |
| | | public class PurchaseLedgerController extends BaseController { |
| | | private IPurchaseLedgerService purchaseLedgerService; |
| | | |
| | | private ISalesLedgerService salesLedgerService; |
| | | private ISalesLedgerProductService salesLedgerProductService; |
| | | |
| | | /** |
| | | * æ¥è¯¢éè´å°è´¦å表 |
| | |
| | | public AjaxResult addOrEditPurchase(@RequestBody PurchaseLedgerDto purchaseLedgerDto) throws IOException { |
| | | return toAjax(purchaseLedgerService.addOrEditPurchase(purchaseLedgerDto)); |
| | | } |
| | | /** |
| | | * æ°å¢éè´æ¨¡æ¿ |
| | | */ |
| | | @PostMapping("/addPurchaseTemplate") |
| | | public AjaxResult addPurchaseTemplate(@RequestBody PurchaseLedgerDto purchaseLedgerDto) throws IOException { |
| | | return toAjax(purchaseLedgerService.addPurchaseTemplate(purchaseLedgerDto)); |
| | | } |
| | | /** |
| | | * æ¥è¯¢éè´æ¨¡æ¿ |
| | | */ |
| | | @ApiOperation("/2222") |
| | | @GetMapping("/getPurchaseTemplateList") |
| | | public AjaxResult getPurchaseTemplateList() { |
| | | PurchaseLedgerDto purchaseLedgerDto = new PurchaseLedgerDto(); |
| | | purchaseLedgerDto.setApprovalStatus(3); |
| | | IPage<PurchaseLedgerDto> purchaseLedgerDtoIPage = purchaseLedgerService.selectPurchaseLedgerListPage(new Page(1, -1), purchaseLedgerDto); |
| | | List<PurchaseLedgerDto> purchaseLedgers = purchaseLedgerDtoIPage.getRecords(); |
| | | |
| | | purchaseLedgers.forEach(purchaseLedgerDto1 -> { |
| | | LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedgerDto1.getId()) |
| | | .eq(SalesLedgerProduct::getType, 2); |
| | | List<SalesLedgerProduct> list = salesLedgerProductService.list(queryWrapper); |
| | | if (!list.isEmpty()) { |
| | | purchaseLedgerDto1.setProductData(list); |
| | | } |
| | | }); |
| | | return AjaxResult.success(purchaseLedgers); |
| | | } |
| | | /** |
| | | * ä¿®æ¹éè´å°è´¦å®¡æ¹ç¶æ |
| | | */ |
| | | @PostMapping("/updateApprovalStatus") |
| | | public AjaxResult addOrEditPurchase(@RequestBody PurchaseLedger purchaseLedger){ |
| | | return toAjax(purchaseLedgerService.updateById(purchaseLedger)); |
| | | } |
| | | /** |
| | | * æ¥è¯¢éè´å°è´¦å产åç¶åå表 |
| | | */ |
| | |
| | | */ |
| | | @GetMapping("/listPage") |
| | | public AjaxResult listPage(Page page, PurchaseLedgerDto purchaseLedger) { |
| | | return AjaxResult.success(purchaseLedgerService.selectPurchaseLedgerListPage(page ,purchaseLedger)); |
| | | IPage<PurchaseLedgerDto> purchaseLedgerDtoIPage = purchaseLedgerService.selectPurchaseLedgerListPage(page ,purchaseLedger); |
| | | //è¿æ»¤æapprovalStatus=3çè®°å½ |
| | | purchaseLedgerDtoIPage.getRecords().removeIf(purchaseLedgerDto -> purchaseLedgerDto.getApprovalStatus() == 3); |
| | | purchaseLedgerDtoIPage.getRecords().forEach(purchaseLedgerDto -> { |
| | | if (purchaseLedgerDto.getUnReceiptPaymentAmount().compareTo(BigDecimal.ZERO) == 0) { |
| | | purchaseLedgerDto.setUnReceiptPaymentAmount(purchaseLedgerDto.getContractAmount()); |
| | | } |
| | | }); |
| | | return AjaxResult.success(purchaseLedgerDtoIPage); |
| | | } |
| | | |
| | | @ApiOperation("çæéè´åºåå·") |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.core.parameters.P; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | |
| | | */ |
| | | @Log(title = "æ¥ç¥¨ç»è®°", businessType = BusinessType.INSERT) |
| | | @PostMapping("/addOrUpdateRegistration") |
| | | public AjaxResult addOrUpdateRegistration(@RequestBody TicketRegistrationDto ticketRegistrationDto) throws IOException { |
| | | return toAjax(ticketRegistrationService.addOrUpdateRegistration(ticketRegistrationDto)); |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult addOrUpdateRegistration(@RequestBody List<TicketRegistrationDto> ticketRegistrationDto) throws IOException { |
| | | if(CollectionUtils.isEmpty(ticketRegistrationDto)) return AjaxResult.error("è¯·éæ©è¦ä¿åçè®°å½"); |
| | | for (TicketRegistrationDto ticketRegistrationDto1 : ticketRegistrationDto) { |
| | | ticketRegistrationService.addOrUpdateRegistration(ticketRegistrationDto1); |
| | | } |
| | | return toAjax(1); |
| | | } |
| | | |
| | | |
| | | @GetMapping("/getProductRecordById") |
| | | public AjaxResult getProductRecordById(Long id) { |
| | | if (id == null) { |
| | | @PostMapping("/getProductRecordById") |
| | | public AjaxResult getProductRecordById(@RequestBody ProductRecordDto productRecordDto) { |
| | | if (productRecordDto.getId() == null) { |
| | | return AjaxResult.error("åæ°é误"); |
| | | } |
| | | return AjaxResult.success(productRecordService.getProductRecordById(id)); |
| | | return AjaxResult.success(productRecordService.getProductRecordById(productRecordDto)); |
| | | } |
| | | |
| | | @ApiModelProperty("ä¿®æ¹æ¥ç¥¨ç»è®°") |
| | |
| | | import com.ruoyi.sales.pojo.CommonFile; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | |
| | | private String projectName; |
| | | private Long issUerId; |
| | | private String issUer; |
| | | /** |
| | | * ååéé¢ï¼äº§åå«ç¨æ»ä»·ï¼ |
| | | */ |
| | | private BigDecimal contractAmount = BigDecimal.ZERO; |
| | | //å¢å¼ç¨ |
| | | private String invoiceAmount = "0"; |
| | | |
| | | private String invoiceNumber = "0"; |
| | | |
| | | private String unTicketsPrice = "0"; |
| | | /** |
| | | * å·²æ¥ç¥¨éé¢ï¼å票éé¢ï¼ |
| | | */ |
| | | private BigDecimal invoiceTotal = BigDecimal.ZERO; |
| | | private BigDecimal invoiceAmount = BigDecimal.ZERO; |
| | | /** |
| | | * åç¥¨å· |
| | | */ |
| | | private String invoiceNumber; |
| | | private BigDecimal unTicketsPrice = BigDecimal.ZERO; |
| | | |
| | | private List<CommonFile> commonFiles; |
| | | |
| | |
| | | */ |
| | | @Excel(name = "ä¾åºååç§°") |
| | | private String supplierName; |
| | | /** |
| | | * æ¯å¦ç½åå |
| | | */ |
| | | @Excel(name = "æ¯å¦ç½åå") |
| | | private Integer isWhite; |
| | | |
| | | /** |
| | | * å½å
¥äººå§åid |
| | |
| | | |
| | | @ApiModelProperty(value = "仿¬¾æ¹å¼") |
| | | private String paymentMethod; |
| | | |
| | | @ApiModelProperty("审æ¹ç¶æ") |
| | | private Integer approvalStatus; |
| | | @ApiModelProperty(value = "模æ¿åç§°") |
| | | private String templateName; |
| | | @ApiModelProperty(value = "审æ¹äººid") |
| | | private Integer approverId; |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import com.ruoyi.purchase.pojo.TicketRegistration; |
| | | import com.ruoyi.sales.pojo.CommonFile; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | |
| | | private String salesContractNo; |
| | | |
| | | /** |
| | | * å¼ç¥¨æ¥æ |
| | | */ |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate entryDate; |
| | | |
| | | /** |
| | | * 客æ·åç§° |
| | | */ |
| | | private String customerName; |
| | |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @TableField(exist = false) |
| | | private LocalDate enterDate; |
| | | |
| | | /** |
| | |
| | | import com.ruoyi.purchase.pojo.ProductRecord; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * éè´å°è´¦äº§åå¼ç¥¨è®°å½Mapperæ¥å£ |
| | | * |
| | |
| | | |
| | | IPage<ProductRecordDto> productRecordPage(Page page, @Param("c") TicketRegistrationDto ticketRegistrationDto); |
| | | |
| | | ProductRecordDto getProductRecordById(Long id); |
| | | List<ProductRecordDto> getProductRecordById(@Param("c") ProductRecordDto productRecordDto); |
| | | } |
| | |
| | | @TableField(exist = false) |
| | | private Integer type; |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value = "仿¬¾æ¹å¼") |
| | | private String paymentMethod; |
| | | @ApiModelProperty("审æ¹ç¶æ") |
| | | private Integer approvalStatus; |
| | | |
| | | @ApiModelProperty(value = "模æ¿åç§°") |
| | | private String templateName; |
| | | @ApiModelProperty(value = "审æ¹äººid") |
| | | private Integer approverId; |
| | | |
| | | } |
| | |
| | | |
| | | AjaxResult updateRecord(ProductRecordDto productRecordDto); |
| | | |
| | | ProductRecordDto getProductRecordById(Long id); |
| | | ProductRecordDto getProductRecordById(ProductRecordDto productRecordDto); |
| | | } |
| | |
| | | List<InvoiceRegistrationProduct> getProductBySalesNo(Long id); |
| | | |
| | | String getPurchaseNo(); |
| | | |
| | | int addPurchaseTemplate(PurchaseLedgerDto purchaseLedgerDto) throws IOException; |
| | | } |
| | |
| | | import com.ruoyi.purchase.dto.TicketRegistrationDto; |
| | | import com.ruoyi.purchase.mapper.ProductRecordMapper; |
| | | import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; |
| | | import com.ruoyi.purchase.mapper.TicketRegistrationMapper; |
| | | import com.ruoyi.purchase.pojo.ProductRecord; |
| | | import com.ruoyi.purchase.pojo.PurchaseLedger; |
| | | import com.ruoyi.purchase.pojo.TicketRegistration; |
| | | import com.ruoyi.purchase.service.IProductRecordService; |
| | | import com.ruoyi.sales.mapper.CommonFileMapper; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | |
| | | return productRecordDtoIPage; |
| | | } |
| | | |
| | | private final TicketRegistrationMapper ticketRegistrationMapper; |
| | | |
| | | @Override |
| | | public AjaxResult updateRecord(ProductRecordDto productRecordDto) { |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(productRecordDto.getSaleLedgerProjectId()); |
| | |
| | | BeanUtils.copyProperties(productRecordDto,productRecord); |
| | | productRecord.setFutureTicketsAmount(productRecord.getFutureTickets().multiply(productRecord.getTaxInclusiveUnitPrice())); |
| | | productRecordMapper.updateById(productRecord); |
| | | |
| | | // ä¿®æ¹åç¥¨å· |
| | | TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(productRecord.getTicketRegistrationId()); |
| | | if(ticketRegistration != null){ |
| | | ticketRegistration.setInvoiceNumber(productRecordDto.getInvoiceNumber()); |
| | | ticketRegistrationMapper.updateById(ticketRegistration); |
| | | } |
| | | return AjaxResult.success("ä¿®æ¹æå"); |
| | | } |
| | | |
| | | @Override |
| | | public ProductRecordDto getProductRecordById(Long id) { |
| | | ProductRecordDto productRecordDto = productRecordMapper.getProductRecordById(id); |
| | | return productRecordDto; |
| | | @Override |
| | | public ProductRecordDto getProductRecordById(ProductRecordDto productRecordDto) { |
| | | List<ProductRecordDto> productRecordDtoList = productRecordMapper.getProductRecordById(productRecordDto); |
| | | if(productRecordDtoList != null && productRecordDtoList.size() > 0){ |
| | | ProductRecordDto productRecordDto1 = productRecordDtoList.get(productRecordDtoList.size() - 1); |
| | | // è¿æ»¤åºä¸ä¼ å
¥ç productRecordDto 主é®ç¸åçè®°å½ |
| | | ProductRecordDto productRecordDto2 = productRecordDtoList.stream().filter(item -> |
| | | item.getId().equals(productRecordDto.getId())) |
| | | .findFirst().orElse(null); |
| | | productRecordDto2.setFutureTickets(productRecordDto1.getFutureTickets()); |
| | | productRecordDto2.setFutureTicketsAmount(productRecordDto1.getFutureTicketsAmount()); |
| | | return productRecordDto2; |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | | import com.ruoyi.purchase.dto.PurchaseLedgerDto; |
| | | import com.ruoyi.purchase.mapper.PaymentRegistrationMapper; |
| | | import com.ruoyi.purchase.mapper.ProductRecordMapper; |
| | | import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; |
| | | import com.ruoyi.purchase.mapper.TicketRegistrationMapper; |
| | | import com.ruoyi.purchase.pojo.PaymentRegistration; |
| | | import com.ruoyi.purchase.pojo.ProductRecord; |
| | | import com.ruoyi.purchase.pojo.PurchaseLedger; |
| | | import com.ruoyi.purchase.pojo.TicketRegistration; |
| | | import com.ruoyi.purchase.service.IPurchaseLedgerService; |
| | | import com.ruoyi.quality.mapper.QualityInspectMapper; |
| | | import com.ruoyi.quality.mapper.QualityInspectParamMapper; |
| | | import com.ruoyi.quality.mapper.QualityTestStandardMapper; |
| | | import com.ruoyi.quality.pojo.QualityInspect; |
| | | import com.ruoyi.quality.pojo.QualityInspectParam; |
| | | import com.ruoyi.quality.pojo.QualityTestStandard; |
| | | import com.ruoyi.sales.mapper.*; |
| | | import com.ruoyi.sales.pojo.CommonFile; |
| | | import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; |
| | |
| | | |
| | | private final ProductRecordMapper productRecordMapper; |
| | | |
| | | private final PaymentRegistrationMapper paymentRegistrationMapper; |
| | | |
| | | private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; |
| | | |
| | | private final StringRedisTemplate redisTemplate; |
| | | private final QualityInspectMapper qualityInspectMapper; |
| | | private final QualityTestStandardMapper qualityTestStandardMapper; |
| | | private final QualityInspectParamMapper qualityInspectParamMapper; |
| | | |
| | | @Value("${file.upload-dir}") |
| | | private String uploadDir; |
| | |
| | | } |
| | | return purchaseLedgerMapper.selectList(queryWrapper); |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int addPurchaseTemplate(PurchaseLedgerDto purchaseLedgerDto)throws IOException { |
| | | //å½å
¥äºº |
| | | SysUser sysUser = userMapper.selectUserById(purchaseLedgerDto.getRecorderId()); |
| | | |
| | | SupplierManage supplierManage = supplierManageMapper.selectById(purchaseLedgerDto.getSupplierId()); |
| | | PurchaseLedger purchaseLedger = new PurchaseLedger(); |
| | | // BeanUtils.copyProperties(purchaseLedger,purchaseLedgerDto); |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | if(ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) { |
| | | purchaseLedger.setTenantId(loginUser.getTenantId()); |
| | | } |
| | | purchaseLedger.setPaymentMethod(purchaseLedgerDto.getPaymentMethod()); |
| | | purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId()); |
| | | purchaseLedger.setSupplierId(purchaseLedgerDto.getSupplierId()); |
| | | purchaseLedger.setTemplateName(purchaseLedgerDto.getTemplateName()); |
| | | // purchaseLedger.setSalesLedgerPId(purchaseLedgerDto.getSalesLedgerId()); |
| | | purchaseLedger.setApprovalStatus(3); |
| | | purchaseLedger.setSupplierName(supplierManage.getSupplierName()); |
| | | purchaseLedger.setRecorderName(sysUser.getNickName()); |
| | | purchaseLedger.setPhoneNumber(sysUser.getPhonenumber()); |
| | | purchaseLedger.setPurchaseContractNumber(UUID.randomUUID().toString().replaceAll("-", "")); |
| | | purchaseLedger.setEntryDate(Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant())); |
| | | int insert = purchaseLedgerMapper.insert(purchaseLedger); |
| | | |
| | | LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(PurchaseLedger::getSupplierName, purchaseLedger.getSupplierName()) |
| | | .eq(PurchaseLedger::getPurchaseContractNumber, purchaseLedger.getPurchaseContractNumber()) |
| | | .eq(PurchaseLedger::getApprovalStatus,3); |
| | | PurchaseLedger purchaseLedger1 = purchaseLedgerMapper.selectOne(queryWrapper); |
| | | |
| | | if(ObjectUtils.isNotEmpty(purchaseLedgerDto.getProductData())) { |
| | | // 4. å¤çåè¡¨æ°æ® |
| | | List<SalesLedgerProduct> salesLedgerProductList = purchaseLedgerDto.getProductData(); |
| | | salesLedgerProductList.forEach(salesLedgerProduct -> { |
| | | salesLedgerProduct.setSalesLedgerId(purchaseLedger1.getId()); |
| | | salesLedgerProduct.setType(2); |
| | | }); |
| | | salesLedgerProductList.forEach(salesLedgerProductMapper::insert); |
| | | } |
| | | return insert; |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws IOException { |
| | |
| | | PurchaseLedger purchaseLedger = new PurchaseLedger(); |
| | | BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger); |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | if(ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) { |
| | | if (ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) { |
| | | purchaseLedger.setTenantId(loginUser.getTenantId()); |
| | | } |
| | | purchaseLedger.setSalesContractNo(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getSalesContractNo() : null); |
| | | purchaseLedger.setSalesContractNo(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getSalesContractNo() : ""); |
| | | purchaseLedger.setSalesLedgerId(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getId() : -1); |
| | | purchaseLedger.setSupplierName(supplierManage.getSupplierName()); |
| | | purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId()); |
| | | purchaseLedger.setRecorderName(sysUser.getNickName()); |
| | |
| | | if (productList != null && !productList.isEmpty()) { |
| | | handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType()); |
| | | } |
| | | |
| | | //æ°å¢åæææ£éª |
| | | for (SalesLedgerProduct saleProduct : productList) { |
| | | //æ¯å¦æ¨éè´¨æ£ï¼å¦ætrue就添å |
| | | if (saleProduct.getIsChecked()) { |
| | | addQualityInspect(purchaseLedger, saleProduct); |
| | | } |
| | | } |
| | | // 5. è¿ç§»ä¸´æ¶æä»¶å°æ£å¼ç®å½ |
| | | if (purchaseLedgerDto.getTempFileIds() != null && !purchaseLedgerDto.getTempFileIds().isEmpty()) { |
| | | migrateTempFilesToFormal(purchaseLedger.getId(), purchaseLedgerDto.getTempFileIds()); |
| | |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | private void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct) { |
| | | QualityInspect qualityInspect = new QualityInspect(); |
| | | qualityInspect.setInspectType(0); |
| | | qualityInspect.setSupplier(purchaseLedger.getSupplierName()); |
| | | qualityInspect.setPurchaseLedgerId(purchaseLedger.getId()); |
| | | qualityInspect.setProductId(saleProduct.getId()); |
| | | qualityInspect.setProductName(saleProduct.getProductCategory()); |
| | | qualityInspect.setModel(saleProduct.getSpecificationModel()); |
| | | qualityInspect.setProductModelId(saleProduct.getProductModelId()); |
| | | qualityInspect.setUnit(saleProduct.getUnit()); |
| | | qualityInspect.setQuantity(saleProduct.getQuantity()); |
| | | qualityInspectMapper.insert(qualityInspect); |
| | | QualityTestStandard qualityTestStandard = new QualityTestStandard(); |
| | | qualityTestStandard.setProductId(saleProduct.getProductId()); |
| | | List<QualityTestStandard> qualityTestStandards = qualityTestStandardMapper.qualityTestStandardList(qualityTestStandard); |
| | | for (QualityTestStandard qualityTestStandardDB : qualityTestStandards) { |
| | | QualityInspectParam qualityInspectParam = new QualityInspectParam(); |
| | | qualityInspectParam.setInspectId(qualityInspect.getId()); |
| | | qualityInspectParam.setParameterItem(qualityTestStandardDB.getParameterItem()); |
| | | qualityInspectParam.setUnit(qualityTestStandardDB.getUnit()); |
| | | qualityInspectParam.setStandardValue(qualityTestStandardDB.getStandardValue()); |
| | | qualityInspectParam.setControlValue(qualityTestStandardDB.getControlValue()); |
| | | qualityInspectParamMapper.insert(qualityInspectParam); |
| | | } |
| | | } |
| | | |
| | | |
| | | private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) { |
| | | if (products == null || products.isEmpty()) { |
| | |
| | | |
| | | LocalDateTime localDateTime = entryDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); |
| | | salesLedgerProduct.setRegisterDate(localDateTime); |
| | | salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity()); |
| | | salesLedgerProduct.setFutureTicketsAmount(salesLedgerProduct.getTaxInclusiveTotalPrice()); |
| | | salesLedgerProductMapper.insert(salesLedgerProduct); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int deletePurchaseLedgerByIds(Long[] ids) { |
| | | if (ids == null || ids.length == 0) { |
| | | throw new BaseException("请éä¸è³å°ä¸æ¡æ°æ®"); |
| | |
| | | salesLedgerProductMapper.delete(queryWrapper); |
| | | // æ¹éå é¤å
³èçéè´å°è´¦çæ¥ç¥¨ç»è®° |
| | | LambdaQueryWrapper<TicketRegistration> ticketRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | ticketRegistrationLambdaQueryWrapper.in(TicketRegistration::getSalesLedgerId,ids); |
| | | ticketRegistrationLambdaQueryWrapper.in(TicketRegistration::getPurchaseLedgerId,ids); |
| | | ticketRegistrationMapper.delete(ticketRegistrationLambdaQueryWrapper); |
| | | // æ¹éå é¤å
³èçéè´å°è´¦çæ¥ç¥¨ç»è®°è®°å½ |
| | | LambdaQueryWrapper<ProductRecord> productRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | productRecordLambdaQueryWrapper.in(ProductRecord::getPurchaseLedgerId,ids); |
| | | productRecordMapper.delete(productRecordLambdaQueryWrapper); |
| | | // æ¹éå é¤ä»æ¬¾ç»è®° |
| | | LambdaQueryWrapper<PaymentRegistration> paymentRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | paymentRegistrationLambdaQueryWrapper.in(PaymentRegistration::getPurchaseLedgerId, ids); |
| | | paymentRegistrationMapper.delete(paymentRegistrationLambdaQueryWrapper); |
| | | //æ¹éå 餿£éªæ å |
| | | LambdaQueryWrapper<QualityInspect> materialInspectLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | materialInspectLambdaQueryWrapper.in(QualityInspect::getPurchaseLedgerId, ids); |
| | | List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(materialInspectLambdaQueryWrapper); |
| | | qualityInspects.stream().forEach(qualityInspect -> { |
| | | if (ObjectUtils.isNotEmpty(qualityInspect.getInspectState())&&qualityInspect.getInspectState().equals(1)) { |
| | | throw new BaseException("å·²æäº¤çæ£éªåä¸è½å é¤"); |
| | | } |
| | | }); |
| | | List<Long> inspectIds = qualityInspects.stream() |
| | | .map(QualityInspect::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | if (inspectIds.size() > 0) { |
| | | LambdaQueryWrapper<QualityInspectParam> qualityStandardLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | qualityStandardLambdaQueryWrapper.in(QualityInspectParam::getInspectId, inspectIds); |
| | | qualityInspectParamMapper.delete(qualityStandardLambdaQueryWrapper); |
| | | } |
| | | |
| | | //æ¹éå é¤åæææ£éªæ°æ® |
| | | qualityInspectMapper.delete(materialInspectLambdaQueryWrapper); |
| | | // æ¹éå é¤éè´å°è´¦ |
| | | return purchaseLedgerMapper.deleteBatchIds(Arrays.asList(ids)); |
| | | } |
| | |
| | | |
| | | // 3.æ¥è¯¢ä¸ä¼ æä»¶ |
| | | LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>(); |
| | | salesLedgerFileWrapper.eq(CommonFile::getCommonId, purchaseLedger.getId()); |
| | | salesLedgerFileWrapper.eq(CommonFile::getCommonId, purchaseLedger.getId()) |
| | | .eq(CommonFile::getType,FileNameType.PURCHASE.getValue()); |
| | | List<CommonFile> salesLedgerFiles = commonFileMapper.selectList(salesLedgerFileWrapper); |
| | | |
| | | // 4. è½¬æ¢ DTO |
| | |
| | | @Override |
| | | public List<InvoiceRegistrationProduct> getProductBySalesNo(Long id) { |
| | | List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(new LambdaQueryWrapper<InvoiceRegistrationProduct>() |
| | | .select(InvoiceRegistrationProduct::getId, InvoiceRegistrationProduct::getProductCategory, InvoiceRegistrationProduct::getSpecificationModel, |
| | | InvoiceRegistrationProduct::getUnit, InvoiceRegistrationProduct::getQuantity) |
| | | .select(InvoiceRegistrationProduct::getId, InvoiceRegistrationProduct::getProductCategory, InvoiceRegistrationProduct::getSpecificationModel, |
| | | InvoiceRegistrationProduct::getUnit, InvoiceRegistrationProduct::getQuantity) |
| | | .eq(InvoiceRegistrationProduct::getSalesLedgerId, id)); |
| | | if (invoiceRegistrationProducts.isEmpty()) { |
| | | return new ArrayList<>(); |
| | |
| | | BeanUtils.copyProperties(ticketRegistrationDto, ticketRegistration); |
| | | ticketRegistration.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber()); |
| | | ticketRegistration.setTenantId(purchaseLedger.getTenantId()); |
| | | ticketRegistration.setIssueDate(ticketRegistrationDto.getIssueDate()); |
| | | ticketRegistration.setIssueDate(ticketRegistrationDto.getEntryDate()); |
| | | ticketRegistration.setContractAmount(purchaseLedger.getContractAmount()); |
| | | ticketRegistration.setSalesLedgerId(purchaseLedger.getSalesLedgerId()); |
| | | ticketRegistration.setEnterDate(ticketRegistrationDto.getEnterDate()); |
| | |
| | | productRecord.setSaleLedgerProjectId(salesLedgerProduct.getId()); |
| | | productRecord.setId(null); |
| | | productRecord.setType("2"); |
| | | insert = productRecordMapper.insert(productRecord); |
| | | insert += productRecordMapper.insert(productRecord); |
| | | } |
| | | if (insert <= 0) { |
| | | throw new RuntimeException("产åå¼ç¥¨æ°é½ä¸º0ï¼è¯·æ£æ¥"); |
| | | } |
| | | } |
| | | if (insert <= 0) { |
| | | throw new RuntimeException("产åå¼ç¥¨æ°é½ä¸º0ï¼è¯·æ£æ¥"); |
| | | } |
| | | } |
| | | // è¿ç§»ä¸´æ¶æä»¶å°æ£å¼ç®å½ |
| | |
| | | Path formalFilePath = formalDirPath.resolve(formalFilename); |
| | | |
| | | try { |
| | | // æ§è¡æä»¶è¿ç§»ï¼ä½¿ç¨ååæä½ç¡®ä¿å®å
¨æ§ï¼ |
| | | // Files.move( |
| | | // Paths.get(tempFile.getTempPath()), |
| | | // formalFilePath, |
| | | // StandardCopyOption.REPLACE_EXISTING, |
| | | // StandardCopyOption.ATOMIC_MOVE |
| | | // ); |
| | | |
| | | // ååç§»å¨å¤±è´¥ï¼ä½¿ç¨å¤å¶+å é¤ |
| | | Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING); |
| | | Files.deleteIfExists(Paths.get(tempFile.getTempPath())); |
| | |
| | | // å°äºçäº0å é¤ ï¼å¤§äº0ä¿®æ¹ |
| | | if(subtract.compareTo(BigDecimal.ZERO) <= 0){ |
| | | ticketRegistrationMapper.deleteById(ticketRegistrations.get(0)); |
| | | // å é¤ä»æ¬¾æµæ°´ |
| | | // å é¤ä»æ¬¾æµæ°´è®°å½ |
| | | paymentRegistrationMapper.delete(new LambdaQueryWrapper<PaymentRegistration>().eq(PaymentRegistration::getTicketRegistrationId, ticketRegistrations.get(0).getId())); |
| | | }else if(subtract.compareTo(BigDecimal.ZERO) > 0){ |
| | | ticketRegistrations.get(0).setInvoiceAmount(subtract); |
| | |
| | | IPage<QualityInspect> qualityInspectListPage(Page page, @Param("qualityInspect") QualityInspect qualityInspect); |
| | | |
| | | List<QualityInspect> qualityInspectExport(@Param("qualityInspect") QualityInspect qualityInspect); |
| | | |
| | | /** |
| | | * æ ¹æ®ç产主表IDæ¹éå é¤è¿ç¨æ£éª |
| | | */ |
| | | int deleteByProductMainIds(@Param("productMainIds") List<Long> productMainIds); |
| | | } |
| | |
| | | */ |
| | | private Integer inspectState; |
| | | |
| | | private Long purchaseLedgerId; |
| | | |
| | | /** |
| | | * æ¥å·¥id |
| | | */ |
| | | private Long productMainId; |
| | | |
| | | private Long productModelId; |
| | | //ä¸åæ ¼ç°è±¡ |
| | | private String defectivePhenomena; |
| | | |
| | | } |
| | |
| | | package com.ruoyi.quality.service.impl; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | |
| | | import com.deepoove.poi.config.Configure; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.HackLoopTableRenderPolicy; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.security.LoginUser; |
| | | import com.ruoyi.procurementrecord.dto.Details; |
| | | import com.ruoyi.procurementrecord.dto.ProcurementAddDto; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; |
| | | import com.ruoyi.procurementrecord.service.ProcurementRecordService; |
| | | import com.ruoyi.quality.dto.QualityInspectDto; |
| | | import com.ruoyi.quality.mapper.QualityInspectMapper; |
| | | import com.ruoyi.quality.mapper.QualityInspectParamMapper; |
| | |
| | | import com.ruoyi.quality.pojo.QualityUnqualified; |
| | | import com.ruoyi.quality.service.IQualityInspectParamService; |
| | | import com.ruoyi.quality.service.IQualityInspectService; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper; |
| | | import com.ruoyi.staff.mapper.StaffOnJobMapper; |
| | | import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.math.BigDecimal; |
| | | import java.net.URLEncoder; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | |
| | | private QualityTestStandardMapper qualityTestStandardMapper; |
| | | |
| | | private QualityUnqualifiedMapper qualityUnqualifiedMapper; |
| | | |
| | | private SalesLedgerProductMapper salesLedgerProductMapper; |
| | | |
| | | private ProcurementRecordService procurementRecordService; |
| | | |
| | | @Override |
| | | public int add(QualityInspectDto qualityInspectDto) { |
| | |
| | | qualityUnqualified.setDefectivePhenomena(text+"è¿äºææ ä¸åå¨ä¸åæ ¼");//ä¸åæ ¼ç°è±¡ |
| | | qualityUnqualifiedMapper.insert(qualityUnqualified); |
| | | } |
| | | |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | if (qualityInspect.getInspectType() == 0) { |
| | | if ("åæ ¼".equals(qualityInspect.getCheckResult())) { |
| | | ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto(); |
| | | procurementRecordOutAdd.setType(1); |
| | | procurementRecordOutAdd.setTypeName("éè´å
¥åº"); |
| | | procurementRecordOutAdd.setNickName(loginUser.getNickName()); |
| | | procurementRecordOutAdd.setPurchaseLedgerId(Math.toIntExact(qualityInspect.getPurchaseLedgerId())); |
| | | if (qualityInspect.getPurchaseLedgerId() == null) { |
| | | throw new BaseException("è¯·éæ©éè´å"); |
| | | } |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(qualityInspect.getProductId()); |
| | | |
| | | ArrayList<Details> detailss = new ArrayList<>(); |
| | | Details details = new Details(); |
| | | details.setId(Math.toIntExact(salesLedgerProduct.getId())); |
| | | details.setInboundQuantity(qualityInspect.getQuantity()); |
| | | details.setWarnNum(salesLedgerProduct.getWarnNum()); |
| | | details.setUnitPrice(salesLedgerProduct.getTaxInclusiveUnitPrice()); |
| | | details.setTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice()); |
| | | details.setProductModelId(qualityInspect.getProductModelId()); |
| | | detailss.add( details); |
| | | procurementRecordOutAdd.setDetails(detailss); |
| | | procurementRecordService.add(procurementRecordOutAdd); |
| | | } |
| | | }else if (qualityInspect.getInspectType() == 1) { |
| | | //æ¥è¯¢UnitPrice/TotalPrice |
| | | ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto(); |
| | | procurementRecordOutAdd.setType(2); |
| | | procurementRecordOutAdd.setTypeName("ç产å
¥åº"); |
| | | procurementRecordOutAdd.setNickName(loginUser.getNickName()); |
| | | List<Details> details = new ArrayList<>(); |
| | | Details details1 = new Details(); |
| | | details1.setInboundQuantity(qualityInspect.getQuantity()); |
| | | details1.setProductModelId(qualityInspect.getProductModelId()); |
| | | procurementRecordOutAdd.setDetails(details); |
| | | |
| | | ProcurementRecordStorage.ProcurementRecordStorageBuilder procurementRecordBuilder = ProcurementRecordStorage.builder() |
| | | .salesLedgerProductId(0) |
| | | .inboundBatches( "ç产åæåå
¥åº") |
| | | .inboundNum(details1.getInboundQuantity()) |
| | | .type(2) |
| | | .warnNum(new BigDecimal(0)) |
| | | .unitPrice(new BigDecimal(0)) |
| | | .totalPrice(new BigDecimal(0)) |
| | | .createTime(LocalDateTime.now()) |
| | | .createUser(loginUser.getUserId()) |
| | | .updateTime(LocalDateTime.now()) |
| | | .updateUser(loginUser.getUserId()) |
| | | .createBy(procurementRecordOutAdd.getNickName()) |
| | | .productModelId(details1.getProductModelId()); |
| | | procurementRecordService.save(procurementRecordBuilder.build()); |
| | | |
| | | |
| | | |
| | | }else if (qualityInspect.getInspectType() == 2) { |
| | | //æ¥è¯¢UnitPrice/TotalPrice |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectSalesLedgerProductByMainId(qualityInspect.getProductMainId()); |
| | | ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto(); |
| | | procurementRecordOutAdd.setType(2); |
| | | procurementRecordOutAdd.setTypeName("ç产å
¥åº"); |
| | | procurementRecordOutAdd.setNickName(loginUser.getNickName()); |
| | | List<Details> details = new ArrayList<>(); |
| | | Details details1 = new Details(); |
| | | details1.setInboundQuantity(qualityInspect.getQuantity()); |
| | | details1.setId(Math.toIntExact(salesLedgerProduct.getId())); |
| | | details1.setUnitPrice(salesLedgerProduct.getTaxInclusiveUnitPrice()); |
| | | details1.setTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice()); |
| | | details1.setProductModelId(salesLedgerProduct.getProductModelId()); |
| | | details.add(details1); |
| | | procurementRecordOutAdd.setDetails(details); |
| | | procurementRecordService.add(procurementRecordOutAdd); |
| | | } |
| | | qualityInspect.setInspectState(1);//å·²æäº¤ |
| | | return qualityInspectMapper.updateById(qualityInspect); |
| | | } |
| | |
| | | package com.ruoyi.sales.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.sales.dto.InvoiceLedgerDto; |
| | | import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; |
| | | import com.ruoyi.sales.mapper.InvoiceLedgerFileMapper; |
| | | import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper; |
| | | import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; |
| | | import com.ruoyi.sales.service.InvoiceLedgerService; |
| | | import io.jsonwebtoken.lang.Collections; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | |
| | | |
| | | @Autowired |
| | | private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; |
| | | |
| | | @Autowired |
| | | private InvoiceLedgerFileMapper invoiceLedgerFileMapper; |
| | | |
| | | /** |
| | | * å¼ç¥¨å°è´¦æ°å¢ |
| | |
| | | } |
| | | |
| | | /** |
| | | * å¼ç¥¨å°è´¦æä»¶å é¤ |
| | | */ |
| | | @DeleteMapping("/delFile") |
| | | @Log(title = "å¼ç¥¨å°è´¦", businessType = BusinessType.DELETE) |
| | | public AjaxResult invoiceLedgerDelFile(@RequestBody List<Integer> ids) { |
| | | if(Collections.isEmpty(ids)) return AjaxResult.error("è¯·éæ©è¦å é¤çæä»¶"); |
| | | invoiceLedgerFileMapper.deleteBatchIds(ids); |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * å¼ç¥¨å°è´¦æä»¶ä¸ä¼ |
| | | * @param file |
| | | * @return |
| | |
| | | package com.ruoyi.sales.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.sales.dto.InvoiceRegistrationDto; |
| | | import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; |
| | | import com.ruoyi.sales.dto.SalesLedgerDto; |
| | | import com.ruoyi.sales.service.InvoiceRegistrationService; |
| | | import io.jsonwebtoken.lang.Collections; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | |
| | | * @return |
| | | */ |
| | | @PostMapping("/save") |
| | | public AjaxResult invoiceRegistrationSave(@RequestBody SalesLedgerDto salesLedgerDto) { |
| | | invoiceRegistrationService.invoiceRegistrationSave(salesLedgerDto); |
| | | @Log(title = "å¼ç¥¨ç»è®°", businessType = com.ruoyi.framework.aspectj.lang.enums.BusinessType.INSERT) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult invoiceRegistrationSave(@RequestBody List<SalesLedgerDto> salesLedgerDto) { |
| | | if(Collections.isEmpty(salesLedgerDto)) return AjaxResult.error("è¯·éæ©è¦ä¿åçè®°å½"); |
| | | salesLedgerDto.forEach(item ->{ |
| | | invoiceRegistrationService.invoiceRegistrationSave(item); |
| | | }); |
| | | |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | |
| | | BeanUtils.copyProperties(receiptPaymentRecordDto, receiptPaymentRecordDto1); |
| | | receiptPaymentRecordDto1.setInvoiceDate(Date.from(receiptPaymentRecordDto.getCreateTime().atZone(DEFAULT_ZONE_ID).toInstant())); |
| | | receiptPaymentRecordDto1.setReceiptPaymentAmountTotal(receiptPaymentRecordDto.getReceiptPaymentAmount()); |
| | | BeanUtils.copyProperties(receiptPaymentRecordDto, receiptPaymentRecordDto1); |
| | | receiptPaymentRecordDtos.add(receiptPaymentRecordDto1); |
| | | }); |
| | | util.exportExcel(response, receiptPaymentRecordDtos, "导åºåæ¬¾æµæ°´å表"); |
| | |
| | | List<Long> salesLedgerIds = iPage.getRecords().stream().map(SalesLedger::getId).collect(Collectors.toList()); |
| | | List<InvoiceLedgerDto> invoiceLedgerDtoList = invoiceLedgerMapper.invoicedTotal(salesLedgerIds); |
| | | if(CollectionUtils.isEmpty(invoiceLedgerDtoList)){ |
| | | invoiceLedgerDtoList = new ArrayList<>(); |
| | | return iPage; |
| | | } |
| | | // 计ç®å款éé¢ï¼å¾
忬¾éé¢ |
| | | List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(new LambdaQueryWrapper<InvoiceRegistrationProduct>() |
| | |
| | | if (ObjectUtils.isNotEmpty(salesLedgerDto.getStatus())) { |
| | | if (salesLedgerDto.getStatus()) { |
| | | iPage.getRecords().removeIf(salesLedger -> Objects.equals(salesLedger.getNoInvoiceAmountTotal(), new BigDecimal("0.00"))); |
| | | iPage.setTotal(iPage.getRecords().size()); |
| | | } |
| | | } |
| | | iPage.setTotal(iPage.getRecords().size()); |
| | | |
| | | return iPage; |
| | | } |
| | | } |
| | |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.procurementrecord.dto.ProcurementPageDto; |
| | | import com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy; |
| | | import com.ruoyi.procurementrecord.service.ProcurementRecordService; |
| | | import com.ruoyi.procurementrecord.utils.StockUtils; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import com.ruoyi.sales.service.ISalesLedgerProductService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.framework.web.page.TableDataInfo; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | { |
| | | @Autowired |
| | | private ISalesLedgerProductService salesLedgerProductService; |
| | | |
| | | @Autowired |
| | | private ProcurementRecordService procurementRecordService; |
| | | @Autowired |
| | | private StockUtils stockUtils; |
| | | /** |
| | | * æ¥è¯¢äº§åä¿¡æ¯å表 |
| | | */ |
| | |
| | | public AjaxResult list(SalesLedgerProduct salesLedgerProduct) |
| | | { |
| | | List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct); |
| | | list.forEach(item -> { |
| | | if (item.getFutureTickets().compareTo(BigDecimal.ZERO) == 0) { |
| | | item.setFutureTickets(item.getQuantity()); |
| | | } |
| | | if (item.getFutureTicketsAmount().compareTo(BigDecimal.ZERO) == 0) { |
| | | item.setFutureTicketsAmount(item.getTaxInclusiveTotalPrice()); |
| | | } |
| | | // ProcurementPageDto procurementDto = new ProcurementPageDto(); |
| | | // procurementDto.setSalesLedgerProductId(item.getId()); |
| | | // procurementDto.setProductCategory(item.getProductCategory()); |
| | | // IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopyByProduction(new Page<>(1,-1), procurementDto); |
| | | BigDecimal stockQuantity = stockUtils.getStockQuantity(item.getProductModelId()).get("stockQuantity"); |
| | | if(stockQuantity != null) { |
| | | // ProcurementPageDtoCopy procurementDtoCopy = result.getRecords().get(0); |
| | | if (item.getQuantity().compareTo(stockQuantity) >= 0 && item.getApproveStatus() == 0) { |
| | | item.setApproveStatus(1); |
| | | salesLedgerProductService.addOrUpdateSalesLedgerProduct(item); |
| | | } |
| | | } |
| | | }); |
| | | return AjaxResult.success(list); |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sales.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.web.controller.BaseController; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.procurementrecord.dto.ProcurementAddDto; |
| | | import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; |
| | | import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; |
| | | import com.ruoyi.procurementrecord.service.ProcurementRecordOutService; |
| | | import com.ruoyi.procurementrecord.service.ProcurementRecordService; |
| | | import com.ruoyi.sales.mapper.ShipmentApprovalMapper; |
| | | import com.ruoyi.sales.mapper.ShippingInfoMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import com.ruoyi.sales.pojo.ShipmentApproval; |
| | | import com.ruoyi.sales.pojo.ShippingInfo; |
| | | import com.ruoyi.sales.service.ISalesLedgerProductService; |
| | | import com.ruoyi.sales.service.ShipmentApprovalService; |
| | | import com.ruoyi.sales.service.ShippingInfoService; |
| | | 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.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | @RestController |
| | | @RequestMapping("/shipmentApproval") |
| | | @Api(tags = "å货审æ¹ç®¡ç") |
| | | public class ShipmentApprovalController extends BaseController { |
| | | |
| | | @Autowired |
| | | private ShipmentApprovalService shipmentApprovalService; |
| | | @Autowired |
| | | private ShipmentApprovalMapper shipmentApprovalMapper; |
| | | |
| | | @Autowired |
| | | private ISalesLedgerProductService salesLedgerProductService; |
| | | @Autowired |
| | | private ProcurementRecordOutService procurementRecordOutService; |
| | | @Autowired |
| | | private ProcurementRecordService procurementRecordStorageService; |
| | | |
| | | @GetMapping("/listPage") |
| | | @ApiOperation("å货审æ¹å表") |
| | | public AjaxResult listPage(Page page, ShipmentApproval req) { |
| | | IPage<ShipmentApproval> listPage = shipmentApprovalService.listPage(page,req); |
| | | return AjaxResult.success(listPage); |
| | | } |
| | | |
| | | @PostMapping("/update") |
| | | @ApiOperation("å货审æ¹,æ´æ°å货审æ¹ç¶æ") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult update(@RequestBody ShipmentApproval req) { |
| | | |
| | | // æ¥è¯¢åè´§å®¡æ¹ |
| | | ShipmentApproval shipmentApproval = shipmentApprovalMapper.selectById(req.getId()); |
| | | if (shipmentApproval == null) { |
| | | return AjaxResult.error("å货审æ¹ä¸åå¨"); |
| | | } |
| | | |
| | | // æ´æ°å货审æ¹ç¶æ |
| | | shipmentApproval.setApproveStatus(req.getApproveStatus()); |
| | | boolean update = shipmentApprovalService.updateById(shipmentApproval); |
| | | if (!update) { |
| | | // äºå¡åæ» |
| | | throw new ServiceException("åè´§å®¡æ¹æ´æ°å¤±è´¥"); |
| | | } |
| | | // æ¥è¯¢å
³èçéå®å°è´¦äº§å |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(shipmentApproval.getSalesLedgerProductId()); |
| | | if (salesLedgerProduct == null) { |
| | | // æå¼å¸¸äºå¡åæ» |
| | | throw new ServiceException("éå®å°è´¦ä¸åå¨ï¼å®¡æ¹åæ»"); |
| | | } |
| | | |
| | | // åæ¥æ´æ°éå®å°è´¦äº§åç审æ¹ç¶æ |
| | | salesLedgerProduct.setApproveStatus(req.getApproveStatus()); |
| | | salesLedgerProductService.updateById(salesLedgerProduct); |
| | | |
| | | // 审æ¹éè¿ |
| | | if (req.getApproveStatus() == 3) { |
| | | // æ¥è¯¢éè´å
¥åºè®°å½ |
| | | LambdaQueryWrapper<ProcurementRecordStorage> lambdaQueryWrapper = new LambdaQueryWrapper<ProcurementRecordStorage>() |
| | | .eq(ProcurementRecordStorage::getSalesLedgerProductId, req.getSalesLedgerProductId()); |
| | | ProcurementRecordStorage procurementRecordStorage = procurementRecordStorageService.getOne(lambdaQueryWrapper); |
| | | |
| | | if (procurementRecordStorage == null) { |
| | | // ä¿è¯åé¢çä¿®æ¹å
¨é¨åæ» |
| | | throw new ServiceException("éè´è®°å½ä¸åå¨ï¼å®¡æ¹åæ»"); |
| | | } |
| | | |
| | | // çæåºåºè®°å½ |
| | | ProcurementRecordOutAdd procurementRecordOutAdd = new ProcurementRecordOutAdd(); |
| | | procurementRecordOutAdd.setId(procurementRecordStorage.getId()); |
| | | procurementRecordOutAdd.setSalesLedgerProductId(Math.toIntExact(salesLedgerProduct.getId())); |
| | | procurementRecordOutAdd.setType(2); |
| | | procurementRecordOutAdd.setUserId(Math.toIntExact(getUserId())); |
| | | procurementRecordOutAdd.setQuantity(salesLedgerProduct.getQuantity().toPlainString()); |
| | | procurementRecordOutAdd.setTime(LocalDate.now().toString()); |
| | | |
| | | procurementRecordOutService.stockout(procurementRecordOutAdd); |
| | | } |
| | | |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 导åºåè´§ä¿¡æ¯ç®¡ç |
| | | */ |
| | | @PostMapping("/export") |
| | | @ApiOperation("导åºå货审æ¹") |
| | | public void export(HttpServletResponse response) { |
| | | List<ShipmentApproval> list = shipmentApprovalService.list(null); |
| | | ExcelUtil<ShipmentApproval> util = new ExcelUtil<ShipmentApproval>(ShipmentApproval.class); |
| | | util.exportExcel(response, list, "å货审æ¹"); |
| | | } |
| | | |
| | | } |
| | |
| | | package com.ruoyi.sales.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.controller.BaseController; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.sales.mapper.ShipmentApprovalMapper; |
| | | import com.ruoyi.sales.mapper.ShippingInfoMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedger; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import com.ruoyi.sales.pojo.ShipmentApproval; |
| | | import com.ruoyi.sales.pojo.ShippingInfo; |
| | | import com.ruoyi.sales.service.ISalesLedgerProductService; |
| | | import com.ruoyi.sales.service.ISalesLedgerService; |
| | | import com.ruoyi.sales.service.ShippingInfoService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | |
| | | |
| | | @Autowired |
| | | private ShippingInfoService shippingInfoService; |
| | | @Autowired |
| | | private ShipmentApprovalMapper shipmentApprovalMapper; |
| | | @Autowired |
| | | private ISalesLedgerProductService salesLedgerProductService; |
| | | |
| | | |
| | | @GetMapping("/listPage") |
| | |
| | | |
| | | @PostMapping("/add") |
| | | @ApiOperation("æ·»å åè´§ä¿¡æ¯") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult add(@RequestBody ShippingInfo req) { |
| | | LambdaQueryWrapper<ShippingInfo> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(ShippingInfo::getSalesLedgerId, req.getSalesLedgerId()); |
| | | wrapper.eq(ShippingInfo::getSalesLedgerProductId, req.getSalesLedgerProductId()); |
| | | List<ShippingInfo> list = shippingInfoService.list(wrapper); |
| | | if(!CollectionUtils.isEmpty(list)){ |
| | | return AjaxResult.error("åè´§ä¿¡æ¯å·²åå¨"); |
| | | } |
| | | boolean save = shippingInfoService.save(req); |
| | | if(save){ |
| | | ShippingInfo shippingInfo = shippingInfoService.getOne(wrapper); |
| | | ShipmentApproval shipmentApproval = new ShipmentApproval(); |
| | | shipmentApproval.setSalesLedgerId(req.getSalesLedgerId()); |
| | | shipmentApproval.setSalesLedgerProductId(req.getSalesLedgerProductId()); |
| | | shipmentApproval.setApproveUserId(req.getApproverId()); |
| | | shipmentApproval.setApproveStatus(2); |
| | | shipmentApproval.setShippingInfoId(shippingInfo.getId()); |
| | | shipmentApprovalMapper.insert(shipmentApproval); |
| | | |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(req.getSalesLedgerProductId()); |
| | | if(salesLedgerProduct != null){ |
| | | salesLedgerProduct.setApproveStatus(2); |
| | | salesLedgerProductService.updateById(salesLedgerProduct); |
| | | } |
| | | |
| | | } |
| | | return save ? AjaxResult.success() : AjaxResult.error(); |
| | | } |
| | | |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "ç»è®°æ¥æ",width = 30,dateFormat = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "ç»è®°æ¥æ") |
| | | private Date invoiceDate; |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "éå®ååå·") |
| | | @Excel(name = "éå®ååå·") |
| | |
| | | |
| | | @ApiModelProperty(value = "忬¾éé¢") |
| | | @Excel(name = "忬¾éé¢") |
| | | private BigDecimal receiptPaymentAmountTotal; |
| | | private BigDecimal receiptPaymentAmount; |
| | | |
| | | @ApiModelProperty(value = "项ç®åç§°") |
| | | @Excel(name = "项ç®åç§°") |
| | |
| | | private List<String> tempFileIds; |
| | | private List<CommonFile> SalesLedgerFiles; |
| | | |
| | | private Integer Type; |
| | | private Integer type; |
| | | @ApiModelProperty(value = "ç¾è®¢æ¥æ") |
| | | private LocalDate executionDate; |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sales.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.sales.pojo.Loss; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/11/13 16:17 |
| | | */ |
| | | public interface LossMapper extends BaseMapper<Loss> { |
| | | } |
| | |
| | | |
| | | import com.ruoyi.common.config.MyBaseMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 产åä¿¡æ¯Mapperæ¥å£ |
| | |
| | | * @date 2025-05-08 |
| | | */ |
| | | public interface SalesLedgerProductMapper extends MyBaseMapper<SalesLedgerProduct> { |
| | | List<SalesLedgerProduct> selectSalesLedgerProductList(@Param("salesLedgerProduct") SalesLedgerProduct salesLedgerProduct); |
| | | |
| | | SalesLedgerProduct selectSalesLedgerProductByMainId(@Param("productMainId") Long productMainId); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sales.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.sales.pojo.ShipmentApproval; |
| | | import com.ruoyi.sales.pojo.ShippingInfo; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | |
| | | public interface ShipmentApprovalMapper extends BaseMapper<ShipmentApproval> { |
| | | IPage<ShipmentApproval> listPage(Page page,@Param("req") ShipmentApproval req); |
| | | |
| | | } |
| | |
| | | @Data |
| | | public class InvoiceLedgerFile { |
| | | |
| | | @ApiModelProperty(value = "æä»¶ID") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "æä»¶åç§°") |
| | | private String name; |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sales.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/11/13 16:16 |
| | | */ |
| | | @Data |
| | | @TableName("loss") |
| | | public class Loss { |
| | | |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | /** |
| | | * åºå· |
| | | */ |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | private BigDecimal rate; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | } |
| | |
| | | private String customerContractNo; |
| | | |
| | | /** |
| | | * å货车çå· |
| | | */ |
| | | @Excel(name = "å货车çå·") |
| | | @TableField(exist = false) |
| | | private String shippingCarNumber; |
| | | |
| | | /** |
| | | * åè´§æ¥æ |
| | | */ |
| | | @Excel(name = "åè´§æ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | @TableField(exist = false) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date shippingDate; |
| | | |
| | | /** |
| | | * 项ç®åç§° |
| | | */ |
| | | @Excel(name = "项ç®åç§°") |
| | |
| | | |
| | | @ApiModelProperty(value = "仿¬¾æ¹å¼") |
| | | private String paymentMethod; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "çäº§ç¶æ") |
| | | private String productionStatus = "æªå¼å§"; |
| | | } |
| | | |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 产åä¿¡æ¯å¯¹è±¡ sales_ledger_product |
| | |
| | | */ |
| | | @TableName("sales_ledger_product") |
| | | @Data |
| | | public class SalesLedgerProduct { |
| | | public class SalesLedgerProduct implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | |
| | | /** |
| | | * æ¬æ¬¡æ¥ç¥¨æ° |
| | | */ |
| | | private BigDecimal ticketsNum; |
| | | private BigDecimal ticketsNum=BigDecimal.ZERO; |
| | | |
| | | /** |
| | | * æ¬æ¬¡æ¥ç¥¨éé¢(å
) |
| | | */ |
| | | private BigDecimal ticketsAmount; |
| | | private BigDecimal ticketsAmount=BigDecimal.ZERO; |
| | | |
| | | /** |
| | | * æªæ¥ç¥¨æ° |
| | | */ |
| | | private BigDecimal futureTickets; |
| | | private BigDecimal futureTickets=BigDecimal.ZERO; |
| | | |
| | | /** |
| | | * æªæ¥ç¥¨éé¢(å
) |
| | | */ |
| | | private BigDecimal futureTicketsAmount; |
| | | private BigDecimal futureTicketsAmount=BigDecimal.ZERO; |
| | | |
| | | @ApiModelProperty(value = "å¼ç¥¨æ°") |
| | | private BigDecimal invoiceNum; |
| | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @Excel(name = "ç»è®°æ¥æ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime registerDate; |
| | | /** |
| | | * å货车çå· |
| | | */ |
| | | @Excel(name = "å货车çå·") |
| | | @TableField(exist = false) |
| | | private String shippingCarNumber; |
| | | |
| | | /** |
| | | * åè´§æ¥æ |
| | | */ |
| | | @Excel(name = "åè´§æ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | @TableField(exist = false) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date shippingDate; |
| | | |
| | | // @TableField(exist = false) |
| | | // @ApiModelProperty(value = "çäº§ç¶æ") |
| | | // private String productionStatus = "æªå¼å§"; |
| | | /** |
| | | * å货审æ¹ç¶æ |
| | | */ |
| | | // @TableField(exist = false) |
| | | @ApiModelProperty(value = "审æ¹ç¶æï¼0æªç产,1å·²ç产,2å¾
å®¡æ ¸(å®¡æ ¸ä¸),3å®¡æ ¸å®æ,4å®¡æ ¸å¤±è´¥") |
| | | private Integer approveStatus; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦è´¨æ£") |
| | | private Boolean isChecked; |
| | | |
| | | /** |
| | | * ç¾å
|
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sales.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @TableName("shipment_approval") |
| | | public class ShipmentApproval { |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | @ApiModelProperty(value = "åè´§ä¿¡æ¯id") |
| | | private Long shippingInfoId; |
| | | @ApiModelProperty(value = "éå®å°è´¦id") |
| | | private Long salesLedgerId; |
| | | @ApiModelProperty(value = "é宿¥ä»·äº§å表id") |
| | | private Long salesLedgerProductId; |
| | | @ApiModelProperty(value = "ç³è¯·é¨é¨id") |
| | | private Long approveDeptId; |
| | | |
| | | @ApiModelProperty(value = "ç³è¯·é¨é¨åç§°") |
| | | @Excel(name = "ç³è¯·é¨é¨") |
| | | private String approveDeptName; |
| | | @ApiModelProperty(value = "审æ¹ç¨æ·id") |
| | | private Integer approveUserId; |
| | | @ApiModelProperty(value = "审æ¹ç¨æ·åç§°") |
| | | @Excel(name = "审æ¹ç¨æ·") |
| | | private String approveUserNames; |
| | | |
| | | /** |
| | | * 审æ¹ç¶æ |
| | | */ |
| | | @ApiModelProperty(value = "审æ¹ç¶æï¼0æªåºåº,1å·²åºåº,2å¾
å®¡æ ¸,3å®¡æ ¸å®æ,4å®¡æ ¸å¤±è´¥") |
| | | @Excel(name = "审æ¹ç¶æ", readConverterExp = "0=æªåºåº,1=å·²åºåº,2=å¾
å®¡æ ¸,3=å®¡æ ¸å®æ,4=å®¡æ ¸å¤±è´¥") |
| | | private Integer approveStatus; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "ä¿®æ¹æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty(value = "åå»ºç¨æ·") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Integer createUser; |
| | | |
| | | @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private Integer updateUser; |
| | | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "åè´§æ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | @TableField(exist = false) |
| | | private Date shippingDate; |
| | | |
| | | @Excel(name = "å货车çå·") |
| | | @TableField(exist = false) |
| | | private String shippingCarNumber; |
| | | |
| | | /** |
| | | * é¢è¦æ°é |
| | | */ |
| | | |
| | | @TableField(exist = false) |
| | | private BigDecimal warnNum; |
| | | |
| | | /** |
| | | * 产å大类 |
| | | */ |
| | | @Excel(name = "产å大类") |
| | | @TableField(exist = false) |
| | | private String productCategory; |
| | | |
| | | /** |
| | | * è§æ ¼åå· |
| | | */ |
| | | @Excel(name = "è§æ ¼åå·") |
| | | @TableField(exist = false) |
| | | private String specificationModel; |
| | | |
| | | /** |
| | | * åä½ |
| | | */ |
| | | @Excel(name = "åä½") |
| | | @TableField(exist = false) |
| | | private String unit; |
| | | |
| | | /** |
| | | * æ°é |
| | | */ |
| | | @Excel(name = "æ°é") |
| | | @TableField(exist = false) |
| | | private BigDecimal quantity; |
| | | @Excel(name = "æä½åºåæ°é") |
| | | @TableField(exist = false) |
| | | private BigDecimal minStock; |
| | | /** |
| | | * ç¨ç |
| | | */ |
| | | @Excel(name = "ç¨ç") |
| | | @TableField(exist = false) |
| | | private BigDecimal taxRate; |
| | | |
| | | /** |
| | | * å«ç¨åä»· |
| | | */ |
| | | @Excel(name = "å«ç¨åä»·") |
| | | @TableField(exist = false) |
| | | private BigDecimal taxInclusiveUnitPrice; |
| | | |
| | | /** |
| | | * å«ç¨æ»ä»· |
| | | */ |
| | | @Excel(name = "å«ç¨æ»ä»·") |
| | | @TableField(exist = false) |
| | | private BigDecimal taxInclusiveTotalPrice; |
| | | |
| | | /** |
| | | * ä¸å«ç¨æ»ä»· |
| | | */ |
| | | @Excel(name = "ä¸å«ç¨æ»ä»·") |
| | | @TableField(exist = false) |
| | | private BigDecimal taxExclusiveTotalPrice; |
| | | |
| | | /** |
| | | * å票类å |
| | | */ |
| | | |
| | | @TableField(exist = false) |
| | | private String invoiceType; |
| | | |
| | | /** |
| | | * å°è´¦ç±»å 1.éå® 2ï¼éè´ |
| | | */ |
| | | @TableField(exist = false) |
| | | private Integer type; |
| | | |
| | | /** |
| | | * æ¬æ¬¡æ¥ç¥¨æ° |
| | | */ |
| | | @TableField(exist = false) |
| | | private BigDecimal ticketsNum; |
| | | |
| | | /** |
| | | * æ¬æ¬¡æ¥ç¥¨éé¢(å
) |
| | | */ |
| | | @TableField(exist = false) |
| | | private BigDecimal ticketsAmount; |
| | | |
| | | /** |
| | | * æªæ¥ç¥¨æ° |
| | | */ |
| | | @TableField(exist = false) |
| | | private BigDecimal futureTickets; |
| | | |
| | | /** |
| | | * æªæ¥ç¥¨éé¢(å
) |
| | | */ |
| | | @TableField(exist = false) |
| | | private BigDecimal futureTicketsAmount; |
| | | |
| | | @ApiModelProperty(value = "å¼ç¥¨æ°") |
| | | @TableField(exist = false) |
| | | private BigDecimal invoiceNum; |
| | | |
| | | @ApiModelProperty(value = "æªå¼ç¥¨æ°") |
| | | @TableField(exist = false) |
| | | private BigDecimal noInvoiceNum; |
| | | |
| | | @ApiModelProperty(value = "å¼ç¥¨éé¢") |
| | | @TableField(exist = false) |
| | | private BigDecimal invoiceAmount; |
| | | |
| | | @ApiModelProperty(value = "æªå¼ç¥¨éé¢") |
| | | @TableField(exist = false) |
| | | private BigDecimal noInvoiceAmount; |
| | | |
| | | @ApiModelProperty(value = "æ¬æ¬¡å¼ç¥¨æ°") |
| | | @TableField(exist = false) |
| | | private BigDecimal currentInvoiceNum; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "æ¬æ¬¡å¼ç¥¨éé¢") |
| | | private BigDecimal currentInvoiceAmount; |
| | | |
| | | /** |
| | | * 产åid |
| | | */ |
| | | @TableField(exist = false) |
| | | private Long productId; |
| | | |
| | | /** |
| | | * 产åè§æ ¼id |
| | | */ |
| | | @TableField(exist = false) |
| | | private Long productModelId; |
| | | |
| | | @ApiModelProperty(value = "åå§æªå¼ç¥¨æ°") |
| | | @TableField(exist = false) |
| | | private BigDecimal originalNoInvoiceNum; |
| | | |
| | | @ApiModelProperty(value = "ä¸´æ¶æªå¼ç¥¨æ°") |
| | | @TableField(exist = false) |
| | | private BigDecimal tempNoInvoiceNum; |
| | | |
| | | @ApiModelProperty(value = "ä¸´æ¶æªå¼ç¥¨éé¢") |
| | | @TableField(exist = false) |
| | | private BigDecimal tempnoInvoiceAmount; |
| | | |
| | | @ApiModelProperty(value = "ä¸´æ¶æªæ¥ç¥¨æ°") |
| | | @TableField(exist = false) |
| | | private BigDecimal tempFutureTickets; |
| | | |
| | | @ApiModelProperty(value = "ä¸´æ¶æªæ¥ç¥¨éé¢") |
| | | @TableField(exist = false) |
| | | private BigDecimal tempFutureTicketsAmount; |
| | | |
| | | @ApiModelProperty("ç»è®°äºº") |
| | | @TableField(exist = false) |
| | | private String register; |
| | | |
| | | @ApiModelProperty("ç»è®°æ¥æ") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @Excel(name = "ç»è®°æ¥æ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | | @TableField(exist = false) |
| | | private LocalDateTime registerDate; |
| | | /** |
| | | * éå®ååå· |
| | | */ |
| | | @Excel(name = "éå®ååå·") |
| | | @TableField(exist = false) |
| | | private String salesContractNo; |
| | | |
| | | /** |
| | | * 客æ·ååå· |
| | | */ |
| | | @Excel(name = "客æ·ååå·") |
| | | @TableField(exist = false) |
| | | private String customerContractNo; |
| | | |
| | | |
| | | /** |
| | | * 项ç®åç§° |
| | | */ |
| | | @Excel(name = "项ç®åç§°") |
| | | @TableField(exist = false) |
| | | private String projectName; |
| | | |
| | | /** |
| | | * å½å
¥æ¥æ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @TableField(exist = false) |
| | | private Date entryDate; |
| | | |
| | | /** |
| | | * ä¸å¡å |
| | | */ |
| | | @Excel(name = "ä¸å¡å") |
| | | @TableField(exist = false) |
| | | private String salesman; |
| | | |
| | | @TableField(exist = false) |
| | | private Long customerId; |
| | | |
| | | /** |
| | | * 客æ·åç§° |
| | | */ |
| | | @Excel(name = "客æ·åç§°") |
| | | @TableField(exist = false) |
| | | private String customerName; |
| | | |
| | | /** |
| | | * å½å
¥äºº |
| | | */ |
| | | @TableField(exist = false) |
| | | private String entryPerson; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "å½å
¥äºº") |
| | | @Excel(name = "å½å
¥äºº") |
| | | private String entryPersonName; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @Excel(name = "夿³¨") |
| | | @TableField(exist = false) |
| | | private String remarks; |
| | | |
| | | /** |
| | | * éä»¶ææï¼å卿件åçç¸å
³ä¿¡æ¯ |
| | | */ |
| | | @TableField(exist = false) |
| | | private String attachmentMaterials; |
| | | |
| | | |
| | | /** |
| | | * ååéé¢ï¼äº§åå«ç¨æ»ä»·ï¼ |
| | | */ |
| | | @Excel(name = "ååéé¢") |
| | | @TableField(exist = false) |
| | | private BigDecimal contractAmount; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "æªå¼ç¥¨éé¢(å
)") |
| | | @Excel(name = "æªå¼ç¥¨éé¢") |
| | | private BigDecimal noInvoiceAmountTotal = BigDecimal.ZERO; |
| | | |
| | | @ApiModelProperty(value = "ç¾è®¢æ¥æ") |
| | | @TableField(exist = false) |
| | | private LocalDate executionDate; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "å·²å¼ç¥¨éé¢(å
)") |
| | | @Excel(name = "å·²å¼ç¥¨éé¢") |
| | | private BigDecimal invoiceTotal = BigDecimal.ZERO; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "忬¾éé¢") |
| | | private BigDecimal receiptPaymentAmountTotal = BigDecimal.ZERO; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "å¾
忬¾éé¢") |
| | | private BigDecimal noReceiptAmount = BigDecimal.ZERO; |
| | | |
| | | @ApiModelProperty(value = "仿¬¾æ¹å¼") |
| | | @TableField(exist = false) |
| | | private String paymentMethod; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "çäº§ç¶æ") |
| | | private String productionStatus = "æªå¼å§"; |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "éå®å°è´¦id") |
| | | private Long salesLedgerId; |
| | | |
| | | @ApiModelProperty(value = "é宿¥ä»·äº§å表id") |
| | | private Long salesLedgerProductId; |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "éå®ååå·") |
| | | @Excel(name = "éå®ååå·") |
| | |
| | | @ApiModelProperty(value = "ç§æ·ID") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | @ApiModelProperty(value = "审æ¹äººid") |
| | | @TableField(exist = false) |
| | | private Integer approverId; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sales.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.sales.pojo.ShipmentApproval; |
| | | import com.ruoyi.sales.pojo.ShippingInfo; |
| | | |
| | | |
| | | public interface ShipmentApprovalService extends IService<ShipmentApproval>{ |
| | | IPage<ShipmentApproval> listPage(Page page, ShipmentApproval req); |
| | | |
| | | } |
| | |
| | | |
| | | /** |
| | | * å¤ç彿å¼ç¥¨å°è´¦å é¤ |
| | | * |
| | | * @param invoiceRegistrationProductId |
| | | * @param invoiceRegistrationProduct |
| | | */ |
| | | private void dealCurrentMonthDel(Integer invoiceRegistrationProductId,InvoiceRegistrationProduct invoiceRegistrationProduct){ |
| | | |
| | | private void dealCurrentMonthDel(Integer invoiceRegistrationProductId, InvoiceRegistrationProduct invoiceRegistrationProduct) { |
| | | |
| | | // å é¤å¼ç¥¨å°è´¦ |
| | | QueryWrapper<InvoiceLedger> delMapper = new QueryWrapper<>(); |
| | | delMapper.eq("invoice_registration_product_id", invoiceRegistrationProductId); |
| | | invoiceLedgerMapper.delete(delMapper); |
| | | // å é¤å¼ç¥¨ç»è®°å¹¶åæ» |
| | | QueryWrapper<InvoiceLedger> delLedgerWrapper = new QueryWrapper<>(); |
| | | delLedgerWrapper.eq("invoice_registration_product_id", invoiceRegistrationProductId); |
| | | invoiceLedgerMapper.delete(delLedgerWrapper); |
| | | |
| | | // æ¥è¯¢å½å产åä¸çææå¼ç¥¨ç»è®° |
| | | QueryWrapper<InvoiceRegistrationProduct> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("sales_ledger_id", invoiceRegistrationProduct.getSalesLedgerId()); |
| | | queryWrapper.eq("sales_ledger_product_id", invoiceRegistrationProduct.getSalesLedgerProductId()); |
| | | queryWrapper.orderByAsc("create_time"); |
| | | List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(queryWrapper); |
| | | // InvoiceRegistrationProduct invoiceRegistrationProduct = invoiceRegistrationProductMapper.selectById(invoiceRegistrationProductId); |
| | | int index = -1; |
| | | for (int i = 0; i < invoiceRegistrationProductList.size(); i++) { |
| | | InvoiceRegistrationProduct currentInvoiceRegProduct = invoiceRegistrationProductList.get(i); |
| | | if(invoiceRegistrationProduct.getId().equals(currentInvoiceRegProduct.getId())){ |
| | | List<InvoiceRegistrationProduct> allList = invoiceRegistrationProductMapper.selectList(queryWrapper); |
| | | |
| | | int index = -1; |
| | | for (int i = 0; i < allList.size(); i++) { |
| | | if (invoiceRegistrationProductId.equals(allList.get(i).getId())) { |
| | | index = i; |
| | | break; |
| | | } |
| | | } |
| | | if(index == -1){ |
| | | if (index == -1) { |
| | | return; |
| | | } |
| | | for (int i = index + 1; i < invoiceRegistrationProductList.size(); i++) { |
| | | InvoiceRegistrationProduct currentInvoiceRegProduct = invoiceRegistrationProductList.get(i); |
| | | // åæ»æªå¼ç¥¨æ°/æªå¼ç¥¨éé¢ |
| | | BigDecimal noInvoiceAmount = currentInvoiceRegProduct.getNoInvoiceAmount().add(invoiceRegistrationProduct.getInvoiceAmount()); |
| | | BigDecimal noInvoiceNum = currentInvoiceRegProduct.getNoInvoiceNum().add(invoiceRegistrationProduct.getInvoiceNum()); |
| | | currentInvoiceRegProduct.setNoInvoiceAmount(noInvoiceAmount); |
| | | currentInvoiceRegProduct.setNoInvoiceNum(noInvoiceNum); |
| | | invoiceRegistrationProductMapper.updateById(currentInvoiceRegProduct); |
| | | |
| | | for (int i = index + 1; i < allList.size(); i++) { |
| | | InvoiceRegistrationProduct current = allList.get(i); |
| | | |
| | | current.setNoInvoiceNum(current.getNoInvoiceNum().add(invoiceRegistrationProduct.getInvoiceNum())); |
| | | current.setNoInvoiceAmount(current.getNoInvoiceAmount().add(invoiceRegistrationProduct.getInvoiceAmount())); |
| | | |
| | | invoiceRegistrationProductMapper.updateById(current); |
| | | } |
| | | |
| | | // å é¤å½åå¼ç¥¨ç»è®° |
| | | invoiceRegistrationProductMapper.deleteById(invoiceRegistrationProductId); |
| | | // ä¿®æ¹sale_productæ°æ® |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(invoiceRegistrationProduct.getSalesLedgerProductId()); |
| | | |
| | | // æ¥è¯¢å é¤åçå©ä½å¼ç¥¨ç»è®° |
| | | QueryWrapper<InvoiceRegistrationProduct> newQueryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("sales_ledger_id", invoiceRegistrationProduct.getSalesLedgerId()); |
| | | queryWrapper.eq("sales_ledger_product_id", invoiceRegistrationProduct.getSalesLedgerProductId()); |
| | | queryWrapper.orderByAsc("create_time"); |
| | | List<InvoiceRegistrationProduct> newInvoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(newQueryWrapper); |
| | | if(CollectionUtils.isEmpty(newInvoiceRegistrationProductList)){ |
| | | newQueryWrapper.eq("sales_ledger_id", invoiceRegistrationProduct.getSalesLedgerId()); |
| | | newQueryWrapper.eq("sales_ledger_product_id", invoiceRegistrationProduct.getSalesLedgerProductId()); |
| | | newQueryWrapper.orderByAsc("create_time"); |
| | | List<InvoiceRegistrationProduct> remainList = invoiceRegistrationProductMapper.selectList(newQueryWrapper); |
| | | |
| | | // æ¥è¯¢éå®å°è´¦äº§å |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(invoiceRegistrationProduct.getSalesLedgerProductId()); |
| | | |
| | | if (CollectionUtils.isEmpty(remainList)) { |
| | | // 没æä»»ä½å¼ç¥¨è®°å½ï¼æ¢å¤åå§ç¶æ |
| | | salesLedgerProduct.setInvoiceNum(BigDecimal.ZERO); |
| | | salesLedgerProduct.setInvoiceAmount(BigDecimal.ZERO); |
| | | salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity()); |
| | | salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice()); |
| | | }else { |
| | | } else { |
| | | salesLedgerProduct.setInvoiceNum(salesLedgerProduct.getInvoiceNum().subtract(invoiceRegistrationProduct.getInvoiceNum())); |
| | | salesLedgerProduct.setInvoiceAmount(salesLedgerProduct.getInvoiceAmount().subtract(invoiceRegistrationProduct.getInvoiceAmount())); |
| | | salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getNoInvoiceNum().add(invoiceRegistrationProduct.getInvoiceNum())); |
| | | salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getNoInvoiceAmount().add(invoiceRegistrationProduct.getInvoiceAmount())); |
| | | } |
| | | |
| | | salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | } |
| | | |
| | |
| | | * @param invoiceRegistrationProduct |
| | | * @param invoiceLedger |
| | | */ |
| | | private void dealOtherMonthDel(InvoiceRegistrationProduct invoiceRegistrationProduct,InvoiceLedger invoiceLedger ){ |
| | | InvoiceRegistrationProduct copyRegProduct = new InvoiceRegistrationProduct(); |
| | | BeanUtils.copyProperties(invoiceRegistrationProduct, copyRegProduct); |
| | | BigDecimal invoiceNum = copyRegProduct.getInvoiceNum().negate(); |
| | | BigDecimal invoiceAmount = copyRegProduct.getInvoiceAmount().negate(); |
| | | // invoice_registration_product |
| | | // å é¤å¼ç¥¨ç»è®°å¹¶åæ» |
| | | private void dealOtherMonthDel(InvoiceRegistrationProduct invoiceRegistrationProduct, InvoiceLedger invoiceLedger) { |
| | | //æ¥è¯¢åå²å¼ç¥¨ç»è®° |
| | | QueryWrapper<InvoiceRegistrationProduct> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("sales_ledger_id", invoiceRegistrationProduct.getSalesLedgerId()); |
| | | queryWrapper.eq("sales_ledger_product_id", invoiceRegistrationProduct.getSalesLedgerProductId()); |
| | | queryWrapper.orderByAsc("create_time"); |
| | | List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(queryWrapper); |
| | | InvoiceRegistrationProduct lastInvoiceRegistrationProduct = invoiceRegistrationProductList.get(invoiceRegistrationProductList.size() - 1); |
| | | BigDecimal noInvoiceNum = lastInvoiceRegistrationProduct.getNoInvoiceNum().subtract(invoiceNum); |
| | | BigDecimal noInvoiceAmount = lastInvoiceRegistrationProduct.getNoInvoiceAmount().subtract(invoiceAmount); |
| | | copyRegProduct.setInvoiceNum(invoiceNum); |
| | | copyRegProduct.setInvoiceAmount(invoiceAmount); |
| | | copyRegProduct.setNoInvoiceNum(noInvoiceNum); |
| | | copyRegProduct.setNoInvoiceAmount(noInvoiceAmount); |
| | | copyRegProduct.setId(null); |
| | | invoiceRegistrationProductMapper.insert(copyRegProduct); |
| | | List<InvoiceRegistrationProduct> list = invoiceRegistrationProductMapper.selectList(queryWrapper); |
| | | |
| | | if (CollectionUtils.isEmpty(list)) { |
| | | return; |
| | | } |
| | | |
| | | InvoiceRegistrationProduct last = list.get(list.size() - 1); |
| | | |
| | | BigDecimal negateInvoiceNum = invoiceRegistrationProduct.getInvoiceNum().negate(); |
| | | BigDecimal negateInvoiceAmount = invoiceRegistrationProduct.getInvoiceAmount().negate(); |
| | | |
| | | InvoiceRegistrationProduct copy = new InvoiceRegistrationProduct(); |
| | | BeanUtils.copyProperties(invoiceRegistrationProduct, copy); |
| | | |
| | | copy.setId(null); |
| | | copy.setInvoiceNum(negateInvoiceNum); |
| | | copy.setInvoiceAmount(negateInvoiceAmount); |
| | | |
| | | // æªå¼ç¥¨ = ä¸ä¸æ¡ + æ¬æ¬¡å²åçæ°é |
| | | copy.setNoInvoiceNum(last.getNoInvoiceNum().add(invoiceRegistrationProduct.getInvoiceNum())); |
| | | copy.setNoInvoiceAmount(last.getNoInvoiceAmount().add(invoiceRegistrationProduct.getInvoiceAmount())); |
| | | |
| | | invoiceRegistrationProductMapper.insert(copy); |
| | | |
| | | // å¤å¶å¼ç¥¨å°è´¦ |
| | | InvoiceLedger invoiceLedgerCopy = new InvoiceLedger(); |
| | | BeanUtils.copyProperties(invoiceLedger, invoiceLedgerCopy); |
| | | invoiceLedgerCopy.setInvoiceRegistrationProductId(copyRegProduct.getId()); |
| | | BigDecimal invoiceTotal = invoiceLedgerCopy.getInvoiceTotal().negate(); |
| | | invoiceLedgerCopy.setInvoiceTotal(invoiceTotal); |
| | | invoiceLedgerCopy.setId(null); |
| | | invoiceLedgerCopy.setInvoiceDate(LocalDate.now()); |
| | | invoiceLedgerMapper.insert(invoiceLedgerCopy); |
| | | // æ´æ°sales_leger_product |
| | | QueryWrapper<SalesLedgerProduct> salesLedgerProductQueryWrapper = new QueryWrapper<>(); |
| | | salesLedgerProductQueryWrapper.eq("id", invoiceRegistrationProduct.getSalesLedgerProductId()); |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectOne(salesLedgerProductQueryWrapper); |
| | | salesLedgerProduct.setNoInvoiceNum(noInvoiceNum); |
| | | salesLedgerProduct.setNoInvoiceAmount(noInvoiceAmount); |
| | | BigDecimal newInvoiceNum = salesLedgerProduct.getInvoiceNum().add(invoiceNum); |
| | | BigDecimal newInvocieAmount = salesLedgerProduct.getInvoiceAmount().add(invoiceAmount); |
| | | salesLedgerProduct.setInvoiceNum(newInvoiceNum); |
| | | salesLedgerProduct.setInvoiceAmount(newInvocieAmount); |
| | | InvoiceLedger ledgerCopy = new InvoiceLedger(); |
| | | BeanUtils.copyProperties(invoiceLedger, ledgerCopy); |
| | | |
| | | ledgerCopy.setId(null); |
| | | ledgerCopy.setInvoiceRegistrationProductId(copy.getId()); |
| | | ledgerCopy.setInvoiceTotal(invoiceLedger.getInvoiceTotal().negate()); |
| | | ledgerCopy.setInvoiceDate(LocalDate.now()); |
| | | |
| | | invoiceLedgerMapper.insert(ledgerCopy); |
| | | |
| | | // åæ» sales_ledger_product |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(invoiceRegistrationProduct.getSalesLedgerProductId()); |
| | | |
| | | // å·²å¼ç¥¨ |
| | | salesLedgerProduct.setInvoiceNum(salesLedgerProduct.getInvoiceNum().add(negateInvoiceNum)); |
| | | salesLedgerProduct.setInvoiceAmount(salesLedgerProduct.getInvoiceAmount().add(negateInvoiceAmount)); |
| | | |
| | | // æªå¼ç¥¨ |
| | | salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getNoInvoiceNum().add(invoiceRegistrationProduct.getInvoiceNum())); |
| | | salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getNoInvoiceAmount().add(invoiceRegistrationProduct.getInvoiceAmount())); |
| | | |
| | | salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | } |
| | | |
| | | } |
| | |
| | | invoiceRegistrationProduct.setSalesLedgerProductId(productDatum.getId().intValue()); |
| | | |
| | | invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct); |
| | | productDatum.setInvoiceNum(currentInvoiceNum); |
| | | productDatum.setInvoiceAmount(productDatum.getCurrentInvoiceAmount()); |
| | | salesLedgerProductMapper.updateById(productDatum); |
| | | // æ°å¢ä¸æ¡å¼ç¥¨å°è´¦æ°æ® |
| | | InvoiceLedger invoiceLedger = new InvoiceLedger(); |
| | |
| | | @Override |
| | | public IPage<ReceiptPaymentDto> bindInvoiceNoRegPage(Page page, ReceiptPaymentDto receiptPaymentDto) { |
| | | IPage<ReceiptPaymentDto> receiptPaymentDtoIPage = receiptPaymentMapper.bindInvoiceNoRegPage(page, receiptPaymentDto); |
| | | if (receiptPaymentDto.getStatus()) { |
| | | receiptPaymentDtoIPage.getRecords().removeIf(receiptPaymentDto1 -> new BigDecimal("0.00").equals(receiptPaymentDto1.getNoReceiptAmount())); |
| | | } |
| | | // if (receiptPaymentDto.getStatus()) { |
| | | // long count = receiptPaymentDtoIPage.getRecords() |
| | | // .stream() |
| | | // .filter(receiptPaymentDto1 -> new BigDecimal("0.00").equals(receiptPaymentDto1.getNoReceiptAmount())) |
| | | // .count(); |
| | | // receiptPaymentDtoIPage |
| | | // .getRecords() |
| | | // .removeIf(receiptPaymentDto1 -> new BigDecimal("0.00").equals(receiptPaymentDto1.getNoReceiptAmount())); |
| | | // receiptPaymentDtoIPage.setTotal(receiptPaymentDtoIPage.getTotal() - count); |
| | | // } |
| | | receiptPaymentDtoIPage.getRecords().forEach(item -> { |
| | | // æ¯è¾å款éé¢ == å¾
忬¾éé¢ |
| | | if (item.getInvoiceTotal().compareTo(item.getReceiptPaymentAmountTotal()) == 0) { |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.production.mapper.*; |
| | | import com.ruoyi.production.pojo.*; |
| | | import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; |
| | | import com.ruoyi.purchase.pojo.PurchaseLedger; |
| | | import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; |
| | |
| | | |
| | | import java.lang.reflect.Field; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | |
| | | |
| | | private PurchaseLedgerMapper purchaseLedgerMapper; |
| | | |
| | | @Autowired |
| | | private ProductOrderMapper productOrderMapper; |
| | | |
| | | private ProcessRouteItemMapper processRouteItemMapper; |
| | | |
| | | private ProductProcessRouteItemMapper productProcessRouteItemMapper; |
| | | |
| | | private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; |
| | | |
| | | private ProcessRouteMapper processRouteMapper; |
| | | private ProductProcessRouteMapper productProcessRouteMapper; |
| | | |
| | | private ProductWorkOrderMapper productWorkOrderMapper; |
| | | |
| | | @Override |
| | | public SalesLedgerProduct selectSalesLedgerProductById(Long id) { |
| | |
| | | |
| | | @Override |
| | | public List<SalesLedgerProduct> selectSalesLedgerProductList(SalesLedgerProduct salesLedgerProduct) { |
| | | LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId()) |
| | | .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType()); |
| | | List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(queryWrapper); |
| | | // LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>(); |
| | | // queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId()) |
| | | // .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType()); |
| | | List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct); |
| | | if(!CollectionUtils.isEmpty(salesLedgerProducts)){ |
| | | // å¼ç¥¨ |
| | | InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto(); |
| | | invoiceRegistrationProductDto.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId().intValue()); |
| | | List<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoList = invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto); |
| | | // ç»è®¡å¼ç¥¨ç»è®°äº§åçå·²å¼ç¥¨æ°/å·²å¼ç¥¨éé¢ |
| | | if(!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)){ |
| | | if (!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)) { |
| | | for (SalesLedgerProduct ledgerProduct : salesLedgerProducts) { |
| | | BigDecimal invoiceNum = BigDecimal.ZERO; |
| | | BigDecimal invoiceAmount = BigDecimal.ZERO; |
| | | BigDecimal noInvoiceNum = BigDecimal.ZERO; |
| | | BigDecimal noInvoiceAmount = BigDecimal.ZERO; |
| | | for (InvoiceRegistrationProductDto registrationProductDto : invoiceRegistrationProductDtoList) { |
| | | if(ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()){ |
| | | invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum()); |
| | | invoiceAmount = invoiceAmount.add(registrationProductDto.getInvoiceAmount()); |
| | | noInvoiceNum = ledgerProduct.getQuantity().subtract(invoiceNum); |
| | | noInvoiceAmount = ledgerProduct.getTaxInclusiveTotalPrice().subtract(invoiceAmount); |
| | | } |
| | | } |
| | | ledgerProduct.setInvoiceNum(invoiceNum); |
| | | ledgerProduct.setInvoiceAmount(invoiceAmount); |
| | | ledgerProduct.setNoInvoiceNum(noInvoiceNum); |
| | | ledgerProduct.setNoInvoiceAmount(noInvoiceAmount); |
| | | } |
| | | } |
| | | |
| | |
| | | return 0; // 没æå¯å é¤çæ°æ® |
| | | } |
| | | |
| | | // å¯è½å±äºå¤ä¸ªä¸»è¡¨ï¼ä½é常ä¸ä¸ªæ¥å£åªå¤çä¸ä¸ªä¸»è¡¨ï¼ |
| | | // å¯è½å±äºå¤ä¸ªä¸»è¡¨ |
| | | Set<Long> mainIds = deletedProducts.stream() |
| | | .map(SalesLedgerProduct::getSalesLedgerId) |
| | | .filter(Objects::nonNull) |
| | |
| | | |
| | | // 2. æ§è¡å é¤æä½ |
| | | int result = salesLedgerProductMapper.deleteBatchIds(Arrays.asList(ids)); |
| | | //å é¤å¯¹åºçç产订å |
| | | //æ¹éæ¥è¯¢productOrder |
| | | List<ProductOrder> productOrders = productOrderMapper.selectList( |
| | | new LambdaQueryWrapper<ProductOrder>() |
| | | .in(ProductOrder::getProductModelId, ids) |
| | | ); |
| | | |
| | | if (!CollectionUtils.isEmpty(productOrders)) { |
| | | List<Long> orderIds = productOrders.stream() |
| | | .map(ProductOrder::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // æ¹éæ¥è¯¢processRouteItems |
| | | List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList( |
| | | new LambdaQueryWrapper<ProductProcessRouteItem>() |
| | | .in(ProductProcessRouteItem::getProductOrderId, orderIds) |
| | | ); |
| | | |
| | | if (!CollectionUtils.isEmpty(allRouteItems)) { |
| | | List<Long> routeItemIds = allRouteItems.stream() |
| | | .map(ProductProcessRouteItem::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // æ¹éå é¤workOrder |
| | | productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>() |
| | | .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)); |
| | | } |
| | | |
| | | // æ¹éå é¤productProcessRouteItem |
| | | productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>() |
| | | .in(ProductProcessRouteItem::getProductOrderId, orderIds)); |
| | | |
| | | // æ¹éå é¤productProcessRoute |
| | | productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>() |
| | | .in(ProductProcessRoute::getProductOrderId, orderIds)); |
| | | |
| | | // æ¹éå é¤productOrder |
| | | productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>() |
| | | .in(ProductOrder::getProductModelId, ids)); |
| | | } |
| | | |
| | | // 3. 对æ¯ä¸ªä¸»è¡¨IDè¿è¡é颿´æ° |
| | | for (Long salesLedgerId : mainIds) { |
| | |
| | | if (salesLedgerProduct.getId() == null) { |
| | | salesLedgerProduct.setRegisterDate(LocalDateTime.now()); |
| | | result = salesLedgerProductMapper.insert(salesLedgerProduct); |
| | | ProductOrder productOrder = new ProductOrder(); |
| | | productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId()); |
| | | productOrder.setProductModelId(salesLedgerProduct.getId()); |
| | | productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId())); |
| | | productOrder.setQuantity(salesLedgerProduct.getQuantity());//éæ±æ°é |
| | | productOrder.setCompleteQuantity(BigDecimal.ZERO);//宿æ°é |
| | | productOrderMapper.insert(productOrder); |
| | | |
| | | ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId())); |
| | | if (processRoute != null) { |
| | | //æ°å¢ç产订åå·¥èºè·¯çº¿ä¸»è¡¨ |
| | | ProductProcessRoute productProcessRoute = new ProductProcessRoute(); |
| | | productProcessRoute.setProductModelId(processRoute.getProductModelId()); |
| | | productProcessRoute.setProcessRouteCode(processRoute.getProcessRouteCode()); |
| | | productProcessRoute.setProductOrderId(productOrder.getId()); |
| | | productProcessRoute.setBomId(processRoute.getBomId()); |
| | | productProcessRouteMapper.insert(productProcessRoute); |
| | | //æ°å¢ç产订åå·¥èºè·¯çº¿å表 |
| | | List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); |
| | | // çæå½åæ¥æçåç¼ï¼å¹´ææ¥ |
| | | String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | for (ProcessRouteItem processRouteItem : processRouteItems) { |
| | | ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); |
| | | productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); |
| | | productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); |
| | | productProcessRouteItem.setProductOrderId(productOrder.getId()); |
| | | productProcessRouteItem.setProductRouteId(productProcessRoute.getId()); |
| | | int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); |
| | | if (insert > 0) { |
| | | // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· |
| | | QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.likeRight("work_order_no", datePrefix) |
| | | .orderByDesc("work_order_no") |
| | | .last("LIMIT 1"); |
| | | |
| | | ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); |
| | | |
| | | int sequenceNumber = 1; // é»è®¤åºå· |
| | | if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { |
| | | String lastNo = lastWorkOrder.getWorkOrderNo().toString(); |
| | | if (lastNo.startsWith(datePrefix)) { |
| | | String seqStr = lastNo.substring(datePrefix.length()); |
| | | try { |
| | | sequenceNumber = Integer.parseInt(seqStr) + 1; |
| | | } catch (NumberFormatException e) { |
| | | sequenceNumber = 1; |
| | | } |
| | | } |
| | | } |
| | | // çæå®æ´çå·¥åå· |
| | | String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber); |
| | | ProductWorkOrder productWorkOrder = new ProductWorkOrder(); |
| | | productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); |
| | | productWorkOrder.setProductOrderId(productOrder.getId()); |
| | | productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity()); |
| | | productWorkOrder.setWorkOrderNo(workOrderNoStr); |
| | | productWorkOrder.setStatus(1); |
| | | |
| | | productWorkOrderMapper.insert(productWorkOrder); |
| | | } |
| | | |
| | | } |
| | | productOrder.setRouteId(processRoute.getId()); |
| | | productOrderMapper.updateById(productOrder); |
| | | } |
| | | |
| | | |
| | | } else { |
| | | salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity()); |
| | | result = salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | |
| | | package com.ruoyi.sales.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.account.pojo.AccountExpense; |
| | | import com.ruoyi.account.pojo.AccountIncome; |
| | | import com.ruoyi.account.service.AccountIncomeService; |
| | | import com.ruoyi.basic.mapper.CustomerMapper; |
| | | import com.ruoyi.basic.mapper.ProductModelMapper; |
| | | import com.ruoyi.basic.pojo.Customer; |
| | | import com.ruoyi.basic.pojo.ProductModel; |
| | | import com.ruoyi.common.enums.FileNameType; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.other.mapper.TempFileMapper; |
| | | import com.ruoyi.other.pojo.TempFile; |
| | | import com.ruoyi.production.mapper.SalesLedgerSchedulingMapper; |
| | | import com.ruoyi.production.pojo.SalesLedgerScheduling; |
| | | import com.ruoyi.production.dto.ProductStructureDto; |
| | | import com.ruoyi.production.mapper.*; |
| | | import com.ruoyi.production.pojo.*; |
| | | import com.ruoyi.project.system.domain.SysDept; |
| | | import com.ruoyi.project.system.mapper.SysDeptMapper; |
| | | import com.ruoyi.quality.mapper.QualityInspectMapper; |
| | | import com.ruoyi.quality.pojo.QualityInspect; |
| | | import com.ruoyi.sales.dto.MonthlyAmountDto; |
| | | import com.ruoyi.sales.dto.SalesLedgerDto; |
| | | import com.ruoyi.sales.mapper.*; |
| | |
| | | private final SalesLedgerSchedulingMapper salesLedgerSchedulingMapper; |
| | | private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; |
| | | |
| | | private final SalesLedgerWorkMapper salesLedgerWorkMapper; |
| | | |
| | | private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; |
| | | |
| | | private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; |
| | | |
| | | private final InvoiceRegistrationMapper invoiceRegistrationMapper; |
| | | |
| | | private final ProductOrderMapper productOrderMapper; |
| | | |
| | | private final ProcessRouteMapper processRouteMapper; |
| | | private final ProductProcessRouteMapper productProcessRouteMapper; |
| | | |
| | | private final ProcessRouteItemMapper processRouteItemMapper; |
| | | |
| | | private final ProductProcessRouteItemMapper productProcessRouteItemMapper; |
| | | |
| | | private final ProductWorkOrderMapper productWorkOrderMapper; |
| | | |
| | | private final ProductionProductMainMapper productionProductMainMapper; |
| | | |
| | | private final ProductionProductOutputMapper productionProductOutputMapper; |
| | | |
| | | private final ProductionProductInputMapper productionProductInputMapper; |
| | | |
| | | private final QualityInspectMapper qualityInspectMapper; |
| | | |
| | | @Autowired |
| | | private SysDeptMapper sysDeptMapper; |
| | | |
| | |
| | | private static final long LOCK_EXPIRE_TIME = 30; // éèªå¨è¿ææ¶é´ï¼ç§ï¼ |
| | | |
| | | private final RedisTemplate<String, String> redisTemplate; |
| | | @Autowired |
| | | private ProductModelMapper productModelMapper; |
| | | @Autowired |
| | | private ProductStructureMapper productStructureMapper; |
| | | |
| | | @Override |
| | | public List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto) { |
| | |
| | | |
| | | // 3.æ¥è¯¢ä¸ä¼ æä»¶ |
| | | LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>(); |
| | | salesLedgerFileWrapper.eq(CommonFile::getCommonId, salesLedger.getId()); |
| | | salesLedgerFileWrapper.eq(CommonFile::getCommonId, salesLedger.getId()) |
| | | .eq(CommonFile::getType, FileNameType.SALE.getValue()); |
| | | List<CommonFile> salesLedgerFiles = commonFileMapper.selectList(salesLedgerFileWrapper); |
| | | |
| | | // 4. è½¬æ¢ DTO |
| | |
| | | if (CollectionUtils.isEmpty(idList)) { |
| | | return 0; |
| | | } |
| | | // ç产订åæå¾
æäº§æ°æ®ï¼å°è´¦ä¸å¯å é¤ |
| | | LambdaQueryWrapper<SalesLedgerScheduling> salesLedgerSchedulingLambdaQueryWrapper = new LambdaQueryWrapper<SalesLedgerScheduling>() |
| | | .in(SalesLedgerScheduling::getSalesLedgerId, idList); |
| | | if (salesLedgerSchedulingMapper.selectCount(salesLedgerSchedulingLambdaQueryWrapper) > 0) { |
| | | throw new BaseException("ææäº§æ°æ®ï¼ä¸å¯å é¤"); |
| | | // å é¤éå®ç®¡çæ°æ® |
| | | LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SalesLedgerProduct::getSalesLedgerId, idList) |
| | | .select(SalesLedgerProduct::getId); |
| | | |
| | | List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(queryWrapper); |
| | | List<Long> productIds = products.stream() |
| | | .map(SalesLedgerProduct::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | //æ¹éæ¥è¯¢productOrder |
| | | List<ProductOrder> productOrders = productOrderMapper.selectList( |
| | | new LambdaQueryWrapper<ProductOrder>() |
| | | .in(ProductOrder::getProductModelId, productIds) |
| | | ); |
| | | |
| | | if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) { |
| | | List<Long> orderIds = productOrders.stream() |
| | | .map(ProductOrder::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // æ¹éæ¥è¯¢processRouteItems |
| | | List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList( |
| | | new LambdaQueryWrapper<ProductProcessRouteItem>() |
| | | .in(ProductProcessRouteItem::getProductOrderId, orderIds) |
| | | ); |
| | | |
| | | if (!CollectionUtils.isEmpty(allRouteItems)) { |
| | | // è·åè¦å é¤çå·¥åºé¡¹ID |
| | | List<Long> routeItemIds = allRouteItems.stream() |
| | | .map(ProductProcessRouteItem::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // æ¥è¯¢å
³èçå·¥åID |
| | | List<ProductWorkOrder> workOrders = productWorkOrderMapper.selectList( |
| | | new LambdaQueryWrapper<ProductWorkOrder>() |
| | | .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds) |
| | | ); |
| | | if (!CollectionUtils.isEmpty(workOrders)) { |
| | | List<Long> workOrderIds = workOrders.stream() |
| | | .map(ProductWorkOrder::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // æ¥è¯¢å
³èçç产主表ID |
| | | List<ProductionProductMain> productMains = productionProductMainMapper.selectList( |
| | | new LambdaQueryWrapper<ProductionProductMain>() |
| | | .in(ProductionProductMain::getWorkOrderId, workOrderIds) |
| | | ); |
| | | List<Long> productMainIds = productMains.stream() |
| | | .map(ProductionProductMain::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // å é¤äº§åºè¡¨ãæå
¥è¡¨æ°æ® |
| | | if (!CollectionUtils.isEmpty(productMainIds)) { |
| | | productionProductOutputMapper.deleteByProductMainIds(productMainIds); |
| | | productionProductInputMapper.deleteByProductMainIds(productMainIds); |
| | | List<QualityInspect> qualityInspects = qualityInspectMapper.selectList( |
| | | new LambdaQueryWrapper<QualityInspect>() |
| | | .in(QualityInspect::getProductMainId, productMainIds) |
| | | ); |
| | | qualityInspects.forEach(qualityInspect -> { |
| | | //inspectState=1 å·²æäº¤ ä¸è½å é¤ |
| | | if(qualityInspect.getInspectState() == 1){ |
| | | throw new RuntimeException("å·²æäº¤çæ£éªåä¸è½å é¤"); |
| | | } |
| | | }); |
| | | qualityInspectMapper.deleteByProductMainIds(productMainIds); |
| | | } |
| | | |
| | | // å é¤çäº§ä¸»è¡¨æ°æ® |
| | | productionProductMainMapper.deleteByWorkOrderIds(workOrderIds); |
| | | |
| | | // å é¤å·¥åæ°æ® |
| | | productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>() |
| | | .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)); |
| | | } |
| | | } |
| | | // æ¹éå é¤processRouteItem |
| | | productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>() |
| | | .in(ProductProcessRouteItem::getProductOrderId, orderIds)); |
| | | |
| | | // æ¹éå é¤productProcessRoute |
| | | productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>() |
| | | .in(ProductProcessRoute::getProductOrderId, orderIds)); |
| | | |
| | | // æ¹éå é¤productOrder |
| | | productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>() |
| | | .in(ProductOrder::getProductModelId, productIds)); |
| | | } |
| | | // 1. å
å é¤åè¡¨æ°æ® |
| | | LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>(); |
| | | productWrapper.in(SalesLedgerProduct::getSalesLedgerId, idList); |
| | | salesLedgerProductMapper.delete(productWrapper); |
| | | |
| | | // æ¹éå é¤äº§åå表 |
| | | if (!productIds.isEmpty()) { |
| | | salesLedgerProductMapper.deleteBatchIds(productIds); |
| | | } |
| | | |
| | | LambdaQueryWrapper<InvoiceRegistrationProduct> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.in(InvoiceRegistrationProduct::getSalesLedgerId, idList); |
| | | List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(wrapper); |
| | | List<Integer> invoiceLedgerIds = new ArrayList<>(); |
| | | if(CollectionUtils.isNotEmpty(invoiceRegistrationProducts)){ |
| | | LambdaQueryWrapper<InvoiceLedger> wrapperOne = new LambdaQueryWrapper<>(); |
| | | wrapperOne.in(InvoiceLedger::getInvoiceRegistrationProductId, invoiceRegistrationProducts.stream().map(InvoiceRegistrationProduct::getId).collect(Collectors.toList())); |
| | | List<InvoiceLedger> invoiceLedgers = invoiceLedgerMapper.selectList(wrapperOne); |
| | | if(CollectionUtils.isNotEmpty(invoiceLedgers)){ |
| | | invoiceLedgerIds = invoiceLedgers.stream().map(InvoiceLedger::getId).collect(Collectors.toList()); |
| | | } |
| | | invoiceLedgerMapper.delete(wrapperOne); |
| | | } |
| | | invoiceRegistrationProductMapper.delete(wrapper); |
| | | LambdaQueryWrapper<InvoiceRegistration> wrapperTwo = new LambdaQueryWrapper<>(); |
| | | wrapperTwo.in(InvoiceRegistration::getSalesLedgerId, idList); |
| | | invoiceRegistrationMapper.delete(wrapperTwo); |
| | | |
| | | if(CollectionUtils.isNotEmpty(invoiceLedgerIds)){ |
| | | LambdaQueryWrapper<ReceiptPayment> wrapperTree = new LambdaQueryWrapper<>(); |
| | | wrapperTree.in(ReceiptPayment::getInvoiceLedgerId, invoiceLedgerIds); |
| | | receiptPaymentMapper.delete(wrapperTree); |
| | | } |
| | | |
| | | // å é¤çäº§ç®¡æ§æ°æ® |
| | | // å é¤çäº§è®¢åæ°æ® |
| | | LambdaQueryWrapper<SalesLedgerScheduling> in = new LambdaQueryWrapper<SalesLedgerScheduling>() |
| | | .in(SalesLedgerScheduling::getSalesLedgerId, idList); |
| | | salesLedgerSchedulingMapper.delete(in); |
| | | LambdaQueryWrapper<InvoiceRegistrationProduct> InvoiceRegistrationProductWrapper = new LambdaQueryWrapper<>(); |
| | | InvoiceRegistrationProductWrapper.in(InvoiceRegistrationProduct::getSalesLedgerId, idList); |
| | | List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(InvoiceRegistrationProductWrapper); |
| | | if (!CollectionUtils.isEmpty(invoiceRegistrationProducts)) { |
| | | List<Integer> InvoiceRegistrationProductIds = invoiceRegistrationProducts.stream().map(InvoiceRegistrationProduct::getId).collect(Collectors.toList()); |
| | | LambdaQueryWrapper<InvoiceLedger> invoiceLedgerQuery = new LambdaQueryWrapper<>(); |
| | | invoiceLedgerQuery.in(InvoiceLedger::getInvoiceRegistrationProductId, InvoiceRegistrationProductIds); |
| | | invoiceLedgerMapper.delete(invoiceLedgerQuery); |
| | | } |
| | | // å é¤çäº§æ´¾å·¥æ°æ® |
| | | LambdaQueryWrapper<SalesLedgerWork> workOrderWrapper = new LambdaQueryWrapper<>(); |
| | | workOrderWrapper.in(SalesLedgerWork::getSalesLedgerId, idList); |
| | | salesLedgerWorkMapper.delete(workOrderWrapper); |
| | | // å é¤ç产æ¥å·¥æ°æ® |
| | | LambdaQueryWrapper<SalesLedgerProductionAccounting> reportWrapper = new LambdaQueryWrapper<>(); |
| | | reportWrapper.in(SalesLedgerProductionAccounting::getSalesLedgerId, idList); |
| | | salesLedgerProductionAccountingMapper.delete(reportWrapper); |
| | | // 2. åå é¤ä¸»è¡¨æ°æ® |
| | | return salesLedgerMapper.deleteBatchIds(idList); |
| | | } |
| | |
| | | salesLedgerMapper.updateById(salesLedger); |
| | | SalesLedger salesLedgerDB = salesLedgerMapper.selectById(salesLedger.getId()); |
| | | List<AccountIncome> accountIncomeDBs = accountIncomeService.getByInvoiceNumberList(salesLedger.getSalesContractNo()); |
| | | if (!CollectionUtils.isEmpty(accountIncomeDBs)) { |
| | | accountIncomeDBs.forEach(accountIncomeDB ->{ |
| | | if (!org.springframework.util.CollectionUtils.isEmpty(accountIncomeDBs)) { |
| | | accountIncomeDBs.forEach(accountIncomeDB -> { |
| | | accountIncomeDB.setCustomerName(salesLedgerDB.getCustomerName()); |
| | | accountIncomeDB.setIncomeMoney(salesLedgerDB.getContractAmount()); |
| | | accountIncomeDB.setIncomeDescribed("éå®ååï¼" + salesLedgerDB.getSalesContractNo()); |
| | |
| | | salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity()); |
| | | salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice()); |
| | | salesLedgerProductMapper.insert(salesLedgerProduct); |
| | | |
| | | ProductOrder productOrder = new ProductOrder(); |
| | | productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId()); |
| | | productOrder.setProductModelId(salesLedgerProduct.getId()); |
| | | productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId())); |
| | | productOrder.setQuantity(salesLedgerProduct.getQuantity());//éæ±æ°é |
| | | productOrder.setCompleteQuantity(BigDecimal.ZERO);//宿æ°é |
| | | productOrderMapper.insert(productOrder); |
| | | |
| | | ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId())); |
| | | List<ProductStructureDto> productStructureDtos = productStructureMapper.listByproductModelId(salesLedgerProduct.getProductModelId()); |
| | | if (processRoute != null) { |
| | | //æ°å¢ç产订åå·¥èºè·¯çº¿ä¸»è¡¨ |
| | | ProductProcessRoute productProcessRoute = new ProductProcessRoute(); |
| | | productProcessRoute.setProductModelId(processRoute.getProductModelId()); |
| | | productProcessRoute.setProcessRouteCode(processRoute.getProcessRouteCode()); |
| | | productProcessRoute.setProductOrderId(productOrder.getId()); |
| | | productProcessRoute.setBomId(processRoute.getBomId()); |
| | | productProcessRouteMapper.insert(productProcessRoute); |
| | | //æ°å¢ç产订åå·¥èºè·¯çº¿å表 |
| | | List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); |
| | | // çæå½åæ¥æçåç¼ï¼å¹´ææ¥ |
| | | String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | for (ProcessRouteItem processRouteItem : processRouteItems) { |
| | | ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); |
| | | productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); |
| | | productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); |
| | | productProcessRouteItem.setProductOrderId(productOrder.getId()); |
| | | productProcessRouteItem.setProductRouteId(productProcessRoute.getId()); |
| | | productProcessRouteItem.setDragSort(processRouteItem.getDragSort()); |
| | | int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); |
| | | if (insert > 0) { |
| | | // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· |
| | | QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.likeRight("work_order_no", datePrefix) |
| | | .orderByDesc("work_order_no") |
| | | .last("LIMIT 1"); |
| | | |
| | | ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); |
| | | |
| | | int sequenceNumber = 1; // é»è®¤åºå· |
| | | if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { |
| | | String lastNo = lastWorkOrder.getWorkOrderNo().toString(); |
| | | if (lastNo.startsWith(datePrefix)) { |
| | | String seqStr = lastNo.substring(datePrefix.length()); |
| | | try { |
| | | sequenceNumber = Integer.parseInt(seqStr) + 1; |
| | | } catch (NumberFormatException e) { |
| | | sequenceNumber = 1; |
| | | } |
| | | } |
| | | } |
| | | // çæå®æ´çå·¥åå· |
| | | String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber); |
| | | ProductWorkOrder productWorkOrder = new ProductWorkOrder(); |
| | | productStructureDtos.stream().forEach(productStructureDto -> { |
| | | if (productStructureDto.getProductModelId().equals(productProcessRouteItem.getProductModelId())){ |
| | | productWorkOrder.setPlanQuantity(productWorkOrder.getPlanQuantity()); |
| | | } |
| | | }); |
| | | if (Objects.equals(productProcessRouteItem.getProductModelId(), salesLedgerProduct.getProductModelId())) { |
| | | productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity()); |
| | | } |
| | | productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); |
| | | productWorkOrder.setProductOrderId(productOrder.getId()); |
| | | productWorkOrder.setWorkOrderNo(workOrderNoStr); |
| | | productWorkOrder.setStatus(1); |
| | | productWorkOrderMapper.insert(productWorkOrder); |
| | | } |
| | | } |
| | | productOrder.setRouteId(processRoute.getId()); |
| | | productOrderMapper.updateById(productOrder); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | return datePart + String.format("%03d", nextSequence); |
| | | } finally { |
| | | // 3. éæ¾éï¼ä½¿ç¨Luaèæ¬ä¿è¯ååæ§ï¼é¿å
误å å
¶ä»çº¿ç¨çéï¼ |
| | | // 3. éæ¾é |
| | | String luaScript = "if redis.call('GET', KEYS[1]) == ARGV[1] then return redis.call('DEL', KEYS[1]) else return 0 end"; |
| | | redisTemplate.execute( |
| | | new DefaultRedisScript<>(luaScript, Long.class), |
| | | Collections.singletonList(lockKey), |
| | | lockValue // åªæææç¸åå¼ççº¿ç¨æè½å é¤é |
| | | lockValue |
| | | ); |
| | | } |
| | | } |
| | |
| | | if (sequences.isEmpty()) { |
| | | return 1; |
| | | } |
| | | // æåºåæ¥æ¾ç¬¬ä¸ä¸ªç¼ºå¤±çæ£æ´æ°ï¼ä¸åé»è¾ä¸è´ï¼ |
| | | // æåºåæ¥æ¾ç¬¬ä¸ä¸ªç¼ºå¤±çæ£æ´æ° |
| | | sequences.sort(Integer::compareTo); |
| | | int next = 1; |
| | | for (int seq : sequences) { |
| | |
| | | .filter(Objects::nonNull) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | |
| | | // æé ä¸»è¡¨æ´æ°å¯¹è±¡ï¼æ¯æä»»æä¸»è¡¨ç±»åï¼ |
| | | // æé ä¸»è¡¨æ´æ°å¯¹è±¡ |
| | | try { |
| | | S entity = mainEntityClass.getDeclaredConstructor().newInstance(); |
| | | Field idField = mainEntityClass.getDeclaredField("id"); |
| | | idField.setAccessible(true); |
| | | idField.set(entity, mainId); |
| | | |
| | | // 设置 contractAmount åæ®µï¼æ³¨æè¿éåè®¾åæ®µå为 "contractAmount" |
| | | Field amountField = mainEntityClass.getDeclaredField("contractAmount"); |
| | | amountField.setAccessible(true); |
| | | amountField.set(entity, totalAmount); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sales.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.sales.mapper.ShipmentApprovalMapper; |
| | | import com.ruoyi.sales.mapper.ShippingInfoMapper; |
| | | import com.ruoyi.sales.pojo.ShipmentApproval; |
| | | import com.ruoyi.sales.pojo.ShippingInfo; |
| | | import com.ruoyi.sales.service.ShipmentApprovalService; |
| | | import com.ruoyi.sales.service.ShippingInfoService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * @author :yys |
| | | * @date : 2025/10/22 9:33 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class ShipmentApprovalServiceImpl extends ServiceImpl<ShipmentApprovalMapper, ShipmentApproval> implements ShipmentApprovalService { |
| | | |
| | | @Autowired |
| | | private ShipmentApprovalMapper shipmentApprovalMapper; |
| | | |
| | | @Override |
| | | public IPage<ShipmentApproval> listPage(Page page, ShipmentApproval req) { |
| | | IPage<ShipmentApproval> listPage = shipmentApprovalMapper.listPage(page, req); |
| | | return listPage; |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.staff.pojo.StaffOnJob; |
| | | import com.ruoyi.staff.service.IStaffJoinLeaveRecordService; |
| | | import com.ruoyi.staff.service.IStaffOnJobService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.validation.Valid; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/staff/staffOnJob") |
| | | @Api(tags = "åå·¥å°è´¦/åå管ç") |
| | | public class StaffOnJobController { |
| | | |
| | | @Resource |
| | |
| | | staffOnJobService.staffOnJobExport(response, staffOnJob); |
| | | } |
| | | |
| | | /** |
| | | * word模æ¿ååå¨èåå·¥å¯¼åº |
| | | * @param response |
| | | * @param staffOnJob |
| | | */ |
| | | @PostMapping("/exportCopy") |
| | | @ApiOperation("word模æ¿ååå¨èå工导åº") |
| | | public AjaxResult exportCopy(HttpServletResponse response,@RequestBody StaffOnJob staffOnJob) throws Exception{ |
| | | return AjaxResult.success(staffOnJobService.exportCopy(response, staffOnJob)); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åç¨æ·ææ°æçè®°å½ |
| | | */ |
| | | @GetMapping("/getCurrentUserLatestScheduling") |
| | | public AjaxResult getCurrentUserLatestScheduling(){ |
| | | return AjaxResult.success(staffSchedulingService.getCurrentUserLatestScheduling()); |
| | | } |
| | | |
| | | @Log(title = "导åºäººåæçå表", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(HttpServletResponse response ) { |
| | |
| | | package com.ruoyi.staff.dto; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | |
| | | public class SaveStaffSchedulingDto implements Serializable { |
| | | private Integer id; |
| | | |
| | | @NotNull(message = "å¿
é¡»è¦éæ©åå·¥") |
| | | private Integer staffId; |
| | | // @NotNull(message = "å¿
é¡»è¦éæ©åå·¥") |
| | | private String staffId; |
| | | |
| | | @NotNull(message = "é¨é¨idä¸è½ä¸ºç©º!") |
| | | /** |
| | | * å伿¶é´ |
| | | */ |
| | | private String lunchTime; |
| | | |
| | | private String staffName; |
| | | |
| | | // @NotNull(message = "é¨é¨idä¸è½ä¸ºç©º!") |
| | | private Integer department; |
| | | |
| | | @NotNull(message = "çæ¬¡idä¸è½ä¸ºç©º!") |
| | | // @NotNull(message = "çæ¬¡idä¸è½ä¸ºç©º!") |
| | | private Integer shiftType; |
| | | |
| | | @NotNull(message = "工使¥ä¸è½ä¸ºç©º!") |
| | | // @NotNull(message = "工使¥ä¸è½ä¸ºç©º!") |
| | | private Date workDate; |
| | | |
| | | @NotNull(message = "ä¸çæ¶é´ä¸è½ä¸ºç©º!") |
| | | // @NotNull(message = "ä¸çæ¶é´ä¸è½ä¸ºç©º!") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime workStartTime; |
| | | |
| | | @NotNull(message = "ä¸çæ¶é´ä¸è½ä¸ºç©º!") |
| | | // @NotNull(message = "ä¸çæ¶é´ä¸è½ä¸ºç©º!") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime workEndTime; |
| | | |
| | | @NotNull(message = "å·¥æ¶ä¸è½ä¸ºç©º!") |
| | | // @NotNull(message = "å·¥æ¶ä¸è½ä¸ºç©º!") |
| | | private Integer status; |
| | | |
| | | private String remark; |
| | |
| | | package com.ruoyi.staff.dto; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | |
| | | /** |
| | | * åå·¥ID |
| | | */ |
| | | private Integer staffId; |
| | | private String staffId; |
| | | |
| | | |
| | | /** |
| | | * å伿¶é´ |
| | | */ |
| | | @Excel(name = "å伿¶é´") |
| | | private String lunchTime; |
| | | |
| | | @Excel(name = "åå·¥åç§°") |
| | | private String staffName; |
| | |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | |
| | |
| | | @Excel(name = "ååç»ææ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | private Date contractEndTime; |
| | | |
| | | |
| | | /** |
| | | * å¼å§è¯ç¨æ¥æ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "å¼å§è¯ç¨æ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | private Date trialStartDate; |
| | | |
| | | /** |
| | | * è¯ç¨ç»ææ¥æ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "è¯ç¨ç»ææ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | private Date trialEndDate; |
| | | |
| | | /** |
| | | * ç¾è®¢æ¶é´ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "ç¾è®¢æ¶é´", width = 30, dateFormat = "yyyy-MM-dd") |
| | | private Date signDate; |
| | | |
| | | /** |
| | | * å·¥èµæ¥é
¬éæ©æ¡æ¬¾ |
| | | */ |
| | | // @Excel(name = "å·¥èµæ¥é
¬éæ©æ¡æ¬¾") |
| | | private String salarySelect; |
| | | |
| | | /** |
| | | * è¯ç¨æå·¥èµ |
| | | */ |
| | | @Excel(name = "è¯ç¨æå·¥èµ") |
| | | private BigDecimal proSalary; |
| | | |
| | | /** |
| | | * å³å¨ååæééæ© |
| | | */ |
| | | // @Excel(name = "å³å¨ååæééæ©") |
| | | private String dateSelect; |
| | | |
| | | /** |
| | | * 夿³¨ï¼ç¦å©å¾
éï¼ |
| | | */ |
| | | @Excel(name = "夿³¨ï¼ç¦å©å¾
éï¼") |
| | | private String remark; |
| | | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | |
| | |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "ååå°ææ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date contractExpireTime; |
| | | |
| | | /** |
| | | * ç»æè¯ç¨æ¶é´ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "ç»æè¯ç¨æ¶é´", width = 30, dateFormat = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date trialEndDate; |
| | | |
| | | /** |
| | | * å¼å§è¯ç¨æ¥æ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "å¼å§è¯ç¨æ¥æ", width = 30, dateFormat = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date trialStartDate; |
| | | |
| | | /** |
| | | * ç¾è®¢æ¶é´ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @Excel(name = "ç¾è®¢æ¶é´", width = 30, dateFormat = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date signDate; |
| | | |
| | | /** |
| | | * å·¥èµæ¥é
¬éæ©æ¡æ¬¾ |
| | | */ |
| | | // @Excel(name = "å·¥èµæ¥é
¬éæ©æ¡æ¬¾") |
| | | private String salarySelect; |
| | | |
| | | /** |
| | | * è¯ç¨æå·¥èµ |
| | | */ |
| | | @Excel(name = "è¯ç¨æå·¥èµ") |
| | | private BigDecimal proSalary; |
| | | |
| | | /** |
| | | * å³å¨ååæééæ© |
| | | */ |
| | | // @Excel(name = "å³å¨ååæééæ©") |
| | | private String dateSelect; |
| | | |
| | | /** |
| | | * 夿³¨ï¼ç¦å©å¾
éï¼ |
| | | */ |
| | | @Excel(name = "夿³¨ï¼ç¦å©å¾
éï¼") |
| | | private String remark; |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "åå»ºç¨æ·") |
| | |
| | | |
| | | @ApiModelProperty(value = "ä¿®æ¹æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") |
| | |
| | | * åå·¥ID |
| | | */ |
| | | @TableField(value = "staff_id") |
| | | private Integer staffId; |
| | | private String staffId; |
| | | |
| | | /** |
| | | * æç人å |
| | | */ |
| | | @TableField(value = "staff_name") |
| | | private String staffName; |
| | | |
| | | /** |
| | | * å伿¶é´ |
| | | */ |
| | | @TableField(value = "lunch_time") |
| | | private String lunchTime; |
| | | |
| | | /** |
| | | * é¨é¨ |
| | |
| | | @TableField(value = "work_date") |
| | | private Date workDate; |
| | | |
| | | |
| | | /** |
| | | * å¼å§å·¥ä½æ¶é´ |
| | | */ |
| | |
| | | List<StaffJoinLeaveRecord> staffOnJobList(); |
| | | |
| | | Boolean importData(MultipartFile file); |
| | | |
| | | String exportCopy(HttpServletResponse response, StaffOnJob staffOnJob) throws Exception; |
| | | } |
| | |
| | | void saveStaffScheduling(SaveStaffSchedulingDto saveStaffSchedulingDto); |
| | | |
| | | IPage<StaffSchedulingDto> listPage(SearchSchedulingVo vo); |
| | | |
| | | StaffScheduling getCurrentUserLatestScheduling(); |
| | | } |
| | |
| | | /*å
¥è*/ |
| | | StaffOnJob job = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery() |
| | | .eq(StaffOnJob::getStaffNo, staffJoinLeaveRecord.getStaffNo())).get(0); |
| | | // å¢å äºååæ¹æ¡æä»¥å»æè¿ä¸ªå¤æ |
| | | //å¦ææ´æ¹çååå°ææ¶é´æ´ä¹
åæ´æ°,å¦ææ²¡æå°±ä¸ç¨æ´æ° |
| | | // if (staffJoinLeaveRecord.getContractEndTime().compareTo(job.getContractExpireTime())>0) { |
| | | // BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties); |
| | | // staffOnJobMapper.updateById(job); |
| | | // } |
| | | BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties); |
| | | staffOnJobMapper.updateById(job); |
| | | if(job != null){ |
| | | BeanUtils.copyProperties(staffJoinLeaveRecord,job,ignoreProperties); |
| | | staffOnJobMapper.updateById(job); |
| | | } |
| | | }else { |
| | | /*离è*/ |
| | | //离èçç¼è¾ä¸ä¼å½±åå¨è表 |
| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.dto.WordDateDto; |
| | | import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper; |
| | | import com.ruoyi.staff.mapper.StaffOnJobMapper; |
| | | import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; |
| | | import com.ruoyi.staff.pojo.StaffOnJob; |
| | | import com.ruoyi.staff.service.IStaffJoinLeaveRecordService; |
| | | import com.ruoyi.staff.service.IStaffOnJobService; |
| | | import freemarker.template.Configuration; |
| | | import freemarker.template.Template; |
| | | import freemarker.template.TemplateException; |
| | | import lombok.AllArgsConstructor; |
| | | |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.*; |
| | | import java.math.BigDecimal; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.time.Instant; |
| | | import java.time.LocalDate; |
| | | import java.time.ZoneId; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @AllArgsConstructor |
| | | @Service |
| | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String exportCopy(HttpServletResponse response, StaffOnJob staffOnJob) throws Exception { |
| | | String url = "/javaWork/product-inventory-management/file/prod/" + staffOnJob.getStaffName() + "-å³å¨åå书.docx"; |
| | | Configuration cfg = new Configuration(Configuration.VERSION_2_3_32); |
| | | // è®¾ç½®æ¨¡æ¿æä»¶æå¨ç®å½ï¼ç»å¯¹è·¯å¾ï¼ä¾å¦ï¼/templates/ï¼ |
| | | cfg.setClassForTemplateLoading(StaffOnJobServiceImpl.class, "/static"); |
| | | cfg.setDefaultEncoding("UTF-8"); |
| | | //2.å®ä¹éè¦å¡«å
çåé |
| | | // â æé å工信æ¯ï¼å®é
项ç®ä¸å¯ä»æ°æ®åº/Excel读åï¼ |
| | | WordDateDto staff = new WordDateDto(); |
| | | BeanUtils.copyProperties(staffOnJob, staff); |
| | | // éè¿ååå¹´éï¼ååå°ææ¥æè®¡ç®ååå¼å§æ¥æï¼å¨è·åå¼å§æ¥æï¼ç»ææ¥æçå¹´ææ¥æ°å |
| | | // ååå°ææ¥æ - ååå¹´éï¼Dateç±»åï¼ |
| | | // 1. å°Date转æ¢ä¸ºInstantï¼æ¶é´æ³ï¼ |
| | | Instant instant = staff.getContractExpireTime().toInstant(); |
| | | |
| | | // ä¹å¯ä»¥æå®å
·ä½æ¶åºï¼ä¾å¦Asia/Shanghaiï¼ |
| | | LocalDate localDate = instant.atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); // ååç»ææ¶é´ |
| | | LocalDate localDate1 = localDate.minusYears(Integer.parseInt(staff.getContractTerm()));// ååå¼å§æ¶é´ |
| | | |
| | | // ç¾è®¢æ¥æè½¬æ¢lcoaldate |
| | | LocalDate localDate2 = staff.getSignDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); |
| | | |
| | | // è¯ç¨æ¥æè½¬æ¢lcoaldate |
| | | LocalDate localDate3 = staff.getTrialStartDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); |
| | | LocalDate localDate4 = staff.getTrialEndDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); |
| | | |
| | | staff.setQyear(localDate2.getYear() + ""); |
| | | staff.setQmoth(localDate2.getMonthValue() + ""); |
| | | staff.setQday(localDate2.getDayOfMonth() + ""); |
| | | if(staff.getDateSelect().equals("A")){ |
| | | staff.setSyear(localDate1.getYear() + ""); |
| | | staff.setSmoth(localDate1.getMonthValue() + ""); |
| | | staff.setSday(localDate1.getDayOfMonth() + ""); |
| | | staff.setEyear(localDate.getDayOfMonth() + ""); |
| | | staff.setEmoth(localDate.getDayOfMonth() + ""); |
| | | staff.setEday(localDate.getDayOfMonth() + ""); |
| | | |
| | | staff.setStyear(localDate3.getYear() + ""); |
| | | staff.setStmoth(localDate3.getMonthValue() + ""); |
| | | staff.setStday(localDate3.getDayOfMonth() + ""); |
| | | staff.setSeyear(localDate4.getYear() + ""); |
| | | staff.setSemoth(localDate4.getMonthValue() + ""); |
| | | staff.setSeday(localDate4.getDayOfMonth() + ""); |
| | | }else if (staff.getDateSelect().equals("B")){ |
| | | |
| | | staff.setBsyear(localDate1.getYear() + ""); |
| | | staff.setBsmoth(localDate1.getMonthValue() + ""); |
| | | staff.setBsday(localDate1.getDayOfMonth() + ""); |
| | | |
| | | staff.setBstyear(localDate3.getYear() + ""); |
| | | staff.setBstmoth(localDate3.getMonthValue() + ""); |
| | | staff.setBstday(localDate3.getDayOfMonth() + ""); |
| | | staff.setBseyear(localDate4.getYear() + ""); |
| | | staff.setBsemoth(localDate4.getMonthValue() + ""); |
| | | staff.setBseday(localDate4.getDayOfMonth() + ""); |
| | | }else if (staff.getDateSelect().equals("C")){ |
| | | staff.setCsyear(localDate1.getYear() + ""); |
| | | staff.setCsmoth(localDate1.getMonthValue() + ""); |
| | | staff.setCsday(localDate1.getDayOfMonth() + ""); |
| | | } |
| | | |
| | | Map<String,Object> data = new HashMap<>(); |
| | | data.put("item",staff); |
| | | //3.å è½½XML æ¨¡æ¿ |
| | | Template template = cfg.getTemplate("å³å¨åå书.xml"); |
| | | //4.çæå¡«å
åç XML å
容 |
| | | StringWriter out = new StringWriter(); |
| | | template.process(data, out); |
| | | String filledXml = out.toString(); |
| | | //5.å°XMLå
容åå
¥äº¤ä»¶å¹¶æ¹ä¸º.docx æ ¼å¼ |
| | | File outputFile = new File(url); |
| | | try(FileOutputStream fos = new FileOutputStream(outputFile); |
| | | OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) { |
| | | osw.write(filledXml); |
| | | } |
| | | return url; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | package com.ruoyi.staff.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.framework.security.LoginUser; |
| | | import com.ruoyi.staff.dto.SaveStaffSchedulingDto; |
| | | import com.ruoyi.staff.dto.StaffSchedulingDto; |
| | | import com.ruoyi.staff.mapper.StaffSchedulingMapper; |
| | |
| | | |
| | | return staffSchedulingMapper.listPage(page, vo); |
| | | } |
| | | |
| | | @Override |
| | | public StaffScheduling getCurrentUserLatestScheduling() { |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | return staffSchedulingMapper.selectOne(new LambdaQueryWrapper<StaffScheduling>() |
| | | .like(StaffScheduling::getStaffId,loginUser.getUserId()) |
| | | .orderByDesc(StaffScheduling::getWorkEndTime) |
| | | .last("LIMIT 1")); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-bdsm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-bdsm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-bhmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-bhmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-cjny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-cjny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-cmny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-cmny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | # æ¥å¿é
ç½® |
| | | logging: |
| | | level: |
| | | org.quartz: DEBUG |
| | | com.ruoyi: warn |
| | | org.springframework: warn |
| | | |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://localhost:3306/product-inventory-management-sqd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://localhost:3306/product-inventory-management-hckx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: 123456 |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | host: 127.0.0.1 |
| | | # host: 172.17.0.1 |
| | | # host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | | database: 0 |
| | | # å¯ç |
| | | # password: root2022! |
| | | # password: root2022! |
| | | password: |
| | | |
| | | # è¿æ¥è¶
æ¶æ¶é´ |
| | |
| | | max-active: 8 |
| | | # #è¿æ¥æ± æå¤§é»å¡çå¾
æ¶é´ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼ |
| | | max-wait: -1ms |
| | | # Quartz宿¶ä»»å¡é
ç½®ï¼æ°å¢é¨åï¼ |
| | | quartz: |
| | | job-store-type: jdbc # ä½¿ç¨æ°æ®åºåå¨ |
| | | jdbc: |
| | | initialize-schema: never # 馿¬¡è¿è¡æ¶èªå¨åå»ºè¡¨ç»æï¼æååæ¹ä¸ºnever |
| | | schema: classpath:org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql # MySQLè¡¨ç»æèæ¬ |
| | | properties: |
| | | org: |
| | | quartz: |
| | | scheduler: |
| | | instanceName: RuoYiScheduler |
| | | instanceId: AUTO |
| | | jobStore: |
| | | class: org.quartz.impl.jdbcjobstore.JobStoreTX |
| | | driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate # MySQLéé
|
| | | tablePrefix: qrtz_ # 表ååç¼ï¼ä¸èæ¬ä¸è´ |
| | | isClustered: false # åèç¹æ¨¡å¼ï¼éç¾¤éæ¹ä¸ºtrueï¼ |
| | | clusterCheckinInterval: 10000 |
| | | txIsolationLevelSerializable: true |
| | | threadPool: |
| | | class: org.quartz.simpl.SimpleThreadPool |
| | | threadCount: 10 # çº¿ç¨æ± å¤§å° |
| | | threadPriority: 5 |
| | | makeThreadsDaemons: true |
| | | updateCheck: false # å
³éçæ¬æ£æ¥ |
| | | |
| | | # tokené
ç½® |
| | | token: |
| | |
| | | secret: abcdefghijklmnopqrstuvwxyz |
| | | # ä»¤çæææï¼é»è®¤30åéï¼ |
| | | expireTime: 450 |
| | | |
| | | |
| | | # MyBatis Plusé
ç½® |
| | | mybatis-plus: |
| | | # æç´¢æå®å
å«å æ ¹æ®èªå·±çé¡¹ç®æ¥ |
| | |
| | | enable-sql-runner: true |
| | | db-config: |
| | | id-type: auto |
| | | |
| | | |
| | | # PageHelperå页æä»¶ |
| | | pagehelper: |
| | | helperDialect: mysql |
| | |
| | | excludes: /system/notice |
| | | # å¹é
龿¥ |
| | | urlPatterns: /system/*,/monitor/*,/tool/* |
| | | |
| | | |
| | | # 代ç çæ |
| | | gen: |
| | | # ä½è
|
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hbkj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hbkj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6380 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hbxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hbxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | accessKey: admin |
| | | secretKey: 12345678 |
| | | preview-expiry: 24 # é¢è§å°åé»è®¤24å°æ¶ |
| | | default-bucket: uploadPath |
| | | default-bucket: jxc |
| | | # ç¨æ·é
ç½® |
| | | user: |
| | | password: |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hckx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hckx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | # #è¿æ¥æ± æå¤§é»å¡çå¾
æ¶é´ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼ |
| | | max-wait: -1ms |
| | | |
| | | # Quartz宿¶ä»»å¡é
ç½®ï¼æ°å¢é¨åï¼ |
| | | quartz: |
| | | job-store-type: jdbc # ä½¿ç¨æ°æ®åºåå¨ |
| | | jdbc: |
| | | initialize-schema: never # 馿¬¡è¿è¡æ¶èªå¨åå»ºè¡¨ç»æï¼æååæ¹ä¸ºnever |
| | | schema: classpath:org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql # MySQLè¡¨ç»æèæ¬ |
| | | properties: |
| | | org: |
| | | quartz: |
| | | scheduler: |
| | | instanceName: RuoYiScheduler |
| | | instanceId: AUTO |
| | | jobStore: |
| | | class: org.quartz.impl.jdbcjobstore.JobStoreTX |
| | | driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate # MySQLéé
|
| | | tablePrefix: qrtz_ # 表ååç¼ï¼ä¸èæ¬ä¸è´ |
| | | isClustered: false # åèç¹æ¨¡å¼ï¼éç¾¤éæ¹ä¸ºtrueï¼ |
| | | clusterCheckinInterval: 10000 |
| | | txIsolationLevelSerializable: true |
| | | threadPool: |
| | | class: org.quartz.simpl.SimpleThreadPool |
| | | threadCount: 10 # çº¿ç¨æ± å¤§å° |
| | | threadPriority: 5 |
| | | makeThreadsDaemons: true |
| | | updateCheck: false # å
³éçæ¬æ£æ¥ |
| | | # tokené
ç½® |
| | | token: |
| | | # 令çèªå®ä¹æ è¯ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 项ç®ç¸å
³é
ç½® |
| | | ruoyi: |
| | | # åç§° |
| | | name: RuoYi |
| | | # çæ¬ |
| | | version: 3.8.9 |
| | | # çæå¹´ä»½ |
| | | copyrightYear: 2025 |
| | | # æä»¶è·¯å¾ 示ä¾ï¼ Windowsé
ç½®D:/ruoyi/uploadPathï¼Linuxé
ç½® /home/ruoyi/uploadPathï¼ |
| | | profile: /javaWork/product-inventory-management/file |
| | | |
| | | # è·åipå°åå¼å
³ |
| | | addressEnabled: false |
| | | # éªè¯ç ç±»å math æ°åè®¡ç® char å符éªè¯ |
| | | captchaType: math |
| | | |
| | | # å¼åç¯å¢é
ç½® |
| | | server: |
| | | # æå¡å¨çHTTP端å£ï¼é»è®¤ä¸º8080 |
| | | port: 9988 |
| | | servlet: |
| | | # åºç¨ç访é®è·¯å¾ |
| | | context-path: / |
| | | tomcat: |
| | | # tomcatçURIç¼ç |
| | | uri-encoding: UTF-8 |
| | | # è¿æ¥æ°æ»¡åçæéæ°ï¼é»è®¤ä¸º100 |
| | | accept-count: 1000 |
| | | threads: |
| | | # tomcatæå¤§çº¿ç¨æ°ï¼é»è®¤ä¸º200 |
| | | max: 800 |
| | | # Tomcatå¯å¨åå§åççº¿ç¨æ°ï¼é»è®¤å¼10 |
| | | min-spare: 100 |
| | | |
| | | # æ¥å¿é
ç½® |
| | | logging: |
| | | level: |
| | | com.ruoyi: warn |
| | | org.springframework: warn |
| | | |
| | | minio: |
| | | endpoint: http://114.132.189.42/ |
| | | port: 7019 |
| | | secure: false |
| | | accessKey: admin |
| | | secretKey: 12345678 |
| | | preview-expiry: 24 # é¢è§å°åé»è®¤24å°æ¶ |
| | | default-bucket: uploadPath |
| | | # ç¨æ·é
ç½® |
| | | user: |
| | | password: |
| | | # å¯ç æå¤§éè¯¯æ¬¡æ° |
| | | maxRetryCount: 5 |
| | | # å¯ç é宿¶é´ï¼é»è®¤10åéï¼ |
| | | lockTime: 10 |
| | | |
| | | # Springé
ç½® |
| | | spring: |
| | | datasource: |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.cj.jdbc.Driver |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://114.132.189.42:9099/product-inventory-management-hckx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | | slave: |
| | | # 仿°æ®æºå¼å
³/é»è®¤å
³é |
| | | enabled: false |
| | | url: |
| | | username: |
| | | password: |
| | | # åå§è¿æ¥æ° |
| | | initialSize: 5 |
| | | # æå°è¿æ¥æ± æ°é |
| | | minIdle: 10 |
| | | # æå¤§è¿æ¥æ± æ°é |
| | | maxActive: 20 |
| | | # é
ç½®è·åè¿æ¥çå¾
è¶
æ¶çæ¶é´ |
| | | maxWait: 60000 |
| | | # é
ç½®è¿æ¥è¶
æ¶æ¶é´ |
| | | connectTimeout: 30000 |
| | | # é
ç½®ç½ç»è¶
æ¶æ¶é´ |
| | | socketTimeout: 60000 |
| | | # é
ç½®é´éå¤ä¹
æè¿è¡ä¸æ¬¡æ£æµï¼æ£æµéè¦å
³éç空é²è¿æ¥ï¼å使¯æ¯«ç§ |
| | | timeBetweenEvictionRunsMillis: 60000 |
| | | # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿å°çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | minEvictableIdleTimeMillis: 300000 |
| | | # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿大çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | maxEvictableIdleTimeMillis: 900000 |
| | | # é
ç½®æ£æµè¿æ¥æ¯å¦ææ |
| | | validationQuery: SELECT 1 FROM DUAL |
| | | testWhileIdle: true |
| | | testOnBorrow: false |
| | | testOnReturn: false |
| | | webStatFilter: |
| | | enabled: true |
| | | statViewServlet: |
| | | enabled: true |
| | | # 设置ç½ååï¼ä¸å¡«åå
许ææè®¿é® |
| | | allow: |
| | | url-pattern: /druid/* |
| | | # æ§å¶å°ç®¡çç¨æ·ååå¯ç |
| | | login-username: ruoyi |
| | | login-password: 123456 |
| | | filter: |
| | | stat: |
| | | enabled: true |
| | | # æ
¢SQLè®°å½ |
| | | log-slow-sql: true |
| | | slow-sql-millis: 1000 |
| | | merge-sql: true |
| | | wall: |
| | | config: |
| | | multi-statement-allow: true |
| | | # èµæºä¿¡æ¯ |
| | | messages: |
| | | # å½é
åèµæºæä»¶è·¯å¾ |
| | | basename: i18n/messages |
| | | # æä»¶ä¸ä¼ |
| | | servlet: |
| | | multipart: |
| | | # å个æä»¶å¤§å° |
| | | max-file-size: 1GB |
| | | # 设置æ»ä¸ä¼ çæä»¶å¤§å° |
| | | max-request-size: 2GB |
| | | # æå¡æ¨¡å |
| | | devtools: |
| | | restart: |
| | | # çé¨ç½²å¼å
³ |
| | | enabled: false |
| | | # redis é
ç½® |
| | | redis: |
| | | # å°å |
| | | host: 127.0.0.1 |
| | | # host: 114.132.189.42 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | | database: 12 |
| | | # å¯ç |
| | | # password: root2022! |
| | | password: |
| | | |
| | | # è¿æ¥è¶
æ¶æ¶é´ |
| | | timeout: 10s |
| | | lettuce: |
| | | pool: |
| | | # è¿æ¥æ± ä¸çæå°ç©ºé²è¿æ¥ |
| | | min-idle: 0 |
| | | # è¿æ¥æ± ä¸çæå¤§ç©ºé²è¿æ¥ |
| | | max-idle: 8 |
| | | # è¿æ¥æ± çæå¤§æ°æ®åºè¿æ¥æ° |
| | | max-active: 8 |
| | | # #è¿æ¥æ± æå¤§é»å¡çå¾
æ¶é´ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼ |
| | | max-wait: -1ms |
| | | |
| | | # tokené
ç½® |
| | | token: |
| | | # 令çèªå®ä¹æ è¯ |
| | | header: Authorization |
| | | # 令çå¯é¥ |
| | | secret: abcdefghijklmnopqrstuvwxyz |
| | | # ä»¤çæææï¼é»è®¤30åéï¼ |
| | | expireTime: 450 |
| | | |
| | | # MyBatis Plusé
ç½® |
| | | mybatis-plus: |
| | | # æç´¢æå®å
å«å æ ¹æ®èªå·±çé¡¹ç®æ¥ |
| | | typeAliasesPackage: com.ruoyi.**.pojo |
| | | # é
ç½®mapperçæ«æï¼æ¾å°ææçmapper.xmlæ å°æä»¶ |
| | | mapperLocations: classpath*:mapper/**/*Mapper.xml |
| | | # å è½½å
¨å±çé
ç½®æä»¶ |
| | | configLocation: classpath:mybatis/mybatis-config.xml |
| | | global-config: |
| | | enable-sql-runner: true |
| | | db-config: |
| | | id-type: auto |
| | | |
| | | # PageHelperå页æä»¶ |
| | | pagehelper: |
| | | helperDialect: mysql |
| | | supportMethodsArguments: true |
| | | params: count=countSql |
| | | |
| | | # Swaggeré
ç½® |
| | | swagger: |
| | | # æ¯å¦å¼å¯swagger |
| | | enabled: true |
| | | # 请æ±åç¼ |
| | | pathMapping: /dev-api |
| | | |
| | | # 鲿¢XSSæ»å» |
| | | xss: |
| | | # è¿æ»¤å¼å
³ |
| | | enabled: true |
| | | # æé¤é¾æ¥ï¼å¤ä¸ªç¨éå·åéï¼ |
| | | excludes: /system/notice |
| | | # å¹é
龿¥ |
| | | urlPatterns: /system/*,/monitor/*,/tool/* |
| | | |
| | | # 代ç çæ |
| | | gen: |
| | | # ä½è
|
| | | author: ruoyi |
| | | # é»è®¤çæå
è·¯å¾ system éæ¹æèªå·±ç模ååç§° å¦ system monitor tool |
| | | packageName: com.ruoyi.project.system |
| | | # èªå¨å»é¤è¡¨åç¼ï¼é»è®¤æ¯true |
| | | autoRemovePre: false |
| | | # 表åç¼ï¼çæç±»åä¸ä¼å
å«è¡¨åç¼ï¼å¤ä¸ªç¨éå·åéï¼ |
| | | tablePrefix: sys_ |
| | | # æ¯å¦å
è®¸çææä»¶è¦çå°æ¬å°ï¼èªå®ä¹è·¯å¾ï¼ï¼é»è®¤ä¸å
许 |
| | | allowOverwrite: false |
| | | |
| | | file: |
| | | temp-dir: D:\\javaWork\\product-inventory-management\\file\\temp\\uploads |
| | | upload-dir: D:\\javaWork\\product-inventory-management\\file\\prod\\uploads |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hcmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hcmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hhkj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hhkj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hsmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hsmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6380 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hsxny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hsxny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hxgy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hxgy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hysn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hysn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-jjxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-jjxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6380 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-jlsn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-jlsn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-jsmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-jsmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-jsyny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-jsyny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 项ç®ç¸å
³é
ç½® |
| | | ruoyi: |
| | | # åç§° |
| | | name: RuoYi |
| | | # çæ¬ |
| | | version: 3.8.9 |
| | | # çæå¹´ä»½ |
| | | copyrightYear: 2025 |
| | | # æä»¶è·¯å¾ 示ä¾ï¼ Windowsé
ç½®D:/ruoyi/uploadPathï¼Linuxé
ç½® /home/ruoyi/uploadPathï¼ |
| | | profile: /javaWork/product-inventory-management/file |
| | | |
| | | # è·åipå°åå¼å
³ |
| | | addressEnabled: false |
| | | # éªè¯ç ç±»å math æ°åè®¡ç® char å符éªè¯ |
| | | captchaType: math |
| | | |
| | | # å¼åç¯å¢é
ç½® |
| | | server: |
| | | # æå¡å¨çHTTP端å£ï¼é»è®¤ä¸º8080 |
| | | port: 9001 |
| | | servlet: |
| | | # åºç¨ç访é®è·¯å¾ |
| | | context-path: / |
| | | tomcat: |
| | | # tomcatçURIç¼ç |
| | | uri-encoding: UTF-8 |
| | | # è¿æ¥æ°æ»¡åçæéæ°ï¼é»è®¤ä¸º100 |
| | | accept-count: 1000 |
| | | threads: |
| | | # tomcatæå¤§çº¿ç¨æ°ï¼é»è®¤ä¸º200 |
| | | max: 800 |
| | | # Tomcatå¯å¨åå§åççº¿ç¨æ°ï¼é»è®¤å¼10 |
| | | min-spare: 100 |
| | | |
| | | # æ¥å¿é
ç½® |
| | | logging: |
| | | level: |
| | | com.ruoyi: warn |
| | | org.springframework: warn |
| | | |
| | | minio: |
| | | endpoint: http://114.132.189.42/ |
| | | port: 7019 |
| | | secure: false |
| | | accessKey: admin |
| | | secretKey: 12345678 |
| | | preview-expiry: 24 # é¢è§å°åé»è®¤24å°æ¶ |
| | | default-bucket: jxc |
| | | # ç¨æ·é
ç½® |
| | | user: |
| | | password: |
| | | # å¯ç æå¤§éè¯¯æ¬¡æ° |
| | | maxRetryCount: 5 |
| | | # å¯ç é宿¶é´ï¼é»è®¤10åéï¼ |
| | | lockTime: 10 |
| | | |
| | | # Springé
ç½® |
| | | spring: |
| | | datasource: |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.cj.jdbc.Driver |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-jtwy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | | slave: |
| | | # 仿°æ®æºå¼å
³/é»è®¤å
³é |
| | | enabled: false |
| | | url: |
| | | username: |
| | | password: |
| | | # åå§è¿æ¥æ° |
| | | initialSize: 5 |
| | | # æå°è¿æ¥æ± æ°é |
| | | minIdle: 10 |
| | | # æå¤§è¿æ¥æ± æ°é |
| | | maxActive: 20 |
| | | # é
ç½®è·åè¿æ¥çå¾
è¶
æ¶çæ¶é´ |
| | | maxWait: 60000 |
| | | # é
ç½®è¿æ¥è¶
æ¶æ¶é´ |
| | | connectTimeout: 30000 |
| | | # é
ç½®ç½ç»è¶
æ¶æ¶é´ |
| | | socketTimeout: 60000 |
| | | # é
ç½®é´éå¤ä¹
æè¿è¡ä¸æ¬¡æ£æµï¼æ£æµéè¦å
³éç空é²è¿æ¥ï¼å使¯æ¯«ç§ |
| | | timeBetweenEvictionRunsMillis: 60000 |
| | | # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿å°çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | minEvictableIdleTimeMillis: 300000 |
| | | # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿大çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | maxEvictableIdleTimeMillis: 900000 |
| | | # é
ç½®æ£æµè¿æ¥æ¯å¦ææ |
| | | validationQuery: SELECT 1 FROM DUAL |
| | | testWhileIdle: true |
| | | testOnBorrow: false |
| | | testOnReturn: false |
| | | webStatFilter: |
| | | enabled: true |
| | | statViewServlet: |
| | | enabled: true |
| | | # 设置ç½ååï¼ä¸å¡«åå
许ææè®¿é® |
| | | allow: |
| | | url-pattern: /druid/* |
| | | # æ§å¶å°ç®¡çç¨æ·ååå¯ç |
| | | login-username: ruoyi |
| | | login-password: 123456 |
| | | filter: |
| | | stat: |
| | | enabled: true |
| | | # æ
¢SQLè®°å½ |
| | | log-slow-sql: true |
| | | slow-sql-millis: 1000 |
| | | merge-sql: true |
| | | wall: |
| | | config: |
| | | multi-statement-allow: true |
| | | # èµæºä¿¡æ¯ |
| | | messages: |
| | | # å½é
åèµæºæä»¶è·¯å¾ |
| | | basename: i18n/messages |
| | | # æä»¶ä¸ä¼ |
| | | servlet: |
| | | multipart: |
| | | # å个æä»¶å¤§å° |
| | | max-file-size: 1GB |
| | | # 设置æ»ä¸ä¼ çæä»¶å¤§å° |
| | | max-request-size: 2GB |
| | | # æå¡æ¨¡å |
| | | devtools: |
| | | restart: |
| | | # çé¨ç½²å¼å
³ |
| | | enabled: false |
| | | # redis é
ç½® |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | | database: 12 |
| | | # å¯ç |
| | | # password: root2022! |
| | | password: |
| | | |
| | | # è¿æ¥è¶
æ¶æ¶é´ |
| | | timeout: 10s |
| | | lettuce: |
| | | pool: |
| | | # è¿æ¥æ± ä¸çæå°ç©ºé²è¿æ¥ |
| | | min-idle: 0 |
| | | # è¿æ¥æ± ä¸çæå¤§ç©ºé²è¿æ¥ |
| | | max-idle: 8 |
| | | # è¿æ¥æ± çæå¤§æ°æ®åºè¿æ¥æ° |
| | | max-active: 8 |
| | | # #è¿æ¥æ± æå¤§é»å¡çå¾
æ¶é´ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼ |
| | | max-wait: -1ms |
| | | |
| | | # Quartz宿¶ä»»å¡é
ç½®ï¼æ°å¢é¨åï¼ |
| | | quartz: |
| | | job-store-type: jdbc # ä½¿ç¨æ°æ®åºåå¨ |
| | | jdbc: |
| | | initialize-schema: never # 馿¬¡è¿è¡æ¶èªå¨åå»ºè¡¨ç»æï¼æååæ¹ä¸ºnever |
| | | schema: classpath:org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql # MySQLè¡¨ç»æèæ¬ |
| | | properties: |
| | | org: |
| | | quartz: |
| | | scheduler: |
| | | instanceName: RuoYiScheduler |
| | | instanceId: AUTO |
| | | jobStore: |
| | | class: org.quartz.impl.jdbcjobstore.JobStoreTX |
| | | driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate # MySQLéé
|
| | | tablePrefix: qrtz_ # 表ååç¼ï¼ä¸èæ¬ä¸è´ |
| | | isClustered: false # åèç¹æ¨¡å¼ï¼éç¾¤éæ¹ä¸ºtrueï¼ |
| | | clusterCheckinInterval: 10000 |
| | | txIsolationLevelSerializable: true |
| | | threadPool: |
| | | class: org.quartz.simpl.SimpleThreadPool |
| | | threadCount: 10 # çº¿ç¨æ± å¤§å° |
| | | threadPriority: 5 |
| | | makeThreadsDaemons: true |
| | | updateCheck: false # å
³éçæ¬æ£æ¥ |
| | | # tokené
ç½® |
| | | token: |
| | | # 令çèªå®ä¹æ è¯ |
| | | header: Authorization |
| | | # 令çå¯é¥ |
| | | secret: abcdefghijklmnopqrstuvwxyz |
| | | # ä»¤çæææï¼é»è®¤30åéï¼ |
| | | expireTime: 450 |
| | | |
| | | # MyBatis Plusé
ç½® |
| | | mybatis-plus: |
| | | # æç´¢æå®å
å«å æ ¹æ®èªå·±çé¡¹ç®æ¥ |
| | | typeAliasesPackage: com.ruoyi.**.pojo |
| | | # é
ç½®mapperçæ«æï¼æ¾å°ææçmapper.xmlæ å°æä»¶ |
| | | mapperLocations: classpath*:mapper/**/*Mapper.xml |
| | | # å è½½å
¨å±çé
ç½®æä»¶ |
| | | configLocation: classpath:mybatis/mybatis-config.xml |
| | | global-config: |
| | | enable-sql-runner: true |
| | | db-config: |
| | | id-type: auto |
| | | |
| | | # PageHelperå页æä»¶ |
| | | pagehelper: |
| | | helperDialect: mysql |
| | | supportMethodsArguments: true |
| | | params: count=countSql |
| | | |
| | | # Swaggeré
ç½® |
| | | swagger: |
| | | # æ¯å¦å¼å¯swagger |
| | | enabled: true |
| | | # 请æ±åç¼ |
| | | pathMapping: /dev-api |
| | | |
| | | # 鲿¢XSSæ»å» |
| | | xss: |
| | | # è¿æ»¤å¼å
³ |
| | | enabled: true |
| | | # æé¤é¾æ¥ï¼å¤ä¸ªç¨éå·åéï¼ |
| | | excludes: /system/notice |
| | | # å¹é
龿¥ |
| | | urlPatterns: /system/*,/monitor/*,/tool/* |
| | | |
| | | # 代ç çæ |
| | | gen: |
| | | # ä½è
|
| | | author: ruoyi |
| | | # é»è®¤çæå
è·¯å¾ system éæ¹æèªå·±ç模ååç§° å¦ system monitor tool |
| | | packageName: com.ruoyi.project.system |
| | | # èªå¨å»é¤è¡¨åç¼ï¼é»è®¤æ¯true |
| | | autoRemovePre: false |
| | | # 表åç¼ï¼çæç±»åä¸ä¼å
å«è¡¨åç¼ï¼å¤ä¸ªç¨éå·åéï¼ |
| | | tablePrefix: sys_ |
| | | # æ¯å¦å
è®¸çææä»¶è¦çå°æ¬å°ï¼èªå®ä¹è·¯å¾ï¼ï¼é»è®¤ä¸å
许 |
| | | allowOverwrite: false |
| | | |
| | | file: |
| | | temp-dir: /javaWork/product-inventory-management/file/temp/uploads |
| | | upload-dir: /javaWork/product-inventory-management/file/prod/uploads |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-mkzs?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-mkzs?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6380 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-lqmsp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-lqmsp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6380 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-mxsc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-mxsc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 项ç®ç¸å
³é
ç½® |
| | | ruoyi: |
| | | # åç§° |
| | | name: RuoYi |
| | | # çæ¬ |
| | | version: 3.8.9 |
| | | # çæå¹´ä»½ |
| | | copyrightYear: 2025 |
| | | # æä»¶è·¯å¾ 示ä¾ï¼ Windowsé
ç½®D:/ruoyi/uploadPathï¼Linuxé
ç½® /home/ruoyi/uploadPathï¼ |
| | | profile: /javaWork/product-inventory-management/file |
| | | |
| | | # è·åipå°åå¼å
³ |
| | | addressEnabled: false |
| | | # éªè¯ç ç±»å math æ°åè®¡ç® char å符éªè¯ |
| | | captchaType: math |
| | | |
| | | # å¼åç¯å¢é
ç½® |
| | | server: |
| | | # æå¡å¨çHTTP端å£ï¼é»è®¤ä¸º8080 |
| | | port: 8080 |
| | | servlet: |
| | | # åºç¨ç访é®è·¯å¾ |
| | | context-path: / |
| | | tomcat: |
| | | # tomcatçURIç¼ç |
| | | uri-encoding: UTF-8 |
| | | # è¿æ¥æ°æ»¡åçæéæ°ï¼é»è®¤ä¸º100 |
| | | accept-count: 1000 |
| | | threads: |
| | | # tomcatæå¤§çº¿ç¨æ°ï¼é»è®¤ä¸º200 |
| | | max: 800 |
| | | # Tomcatå¯å¨åå§åççº¿ç¨æ°ï¼é»è®¤å¼10 |
| | | min-spare: 100 |
| | | |
| | | # æ¥å¿é
ç½® |
| | | logging: |
| | | level: |
| | | com.ruoyi: warn |
| | | org.springframework: warn |
| | | |
| | | minio: |
| | | endpoint: http://114.132.189.42/ |
| | | port: 7019 |
| | | secure: false |
| | | accessKey: admin |
| | | secretKey: 12345678 |
| | | preview-expiry: 24 # é¢è§å°åé»è®¤24å°æ¶ |
| | | default-bucket: demo-product |
| | | # ç¨æ·é
ç½® |
| | | user: |
| | | password: |
| | | # å¯ç æå¤§éè¯¯æ¬¡æ° |
| | | maxRetryCount: 5 |
| | | # å¯ç é宿¶é´ï¼é»è®¤10åéï¼ |
| | | lockTime: 10 |
| | | |
| | | # Springé
ç½® |
| | | spring: |
| | | datasource: |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.cj.jdbc.Driver |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://localhost:3306/product-inventory-management?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: 123456 |
| | | # ä»åºæ°æ®æº |
| | | slave: |
| | | # 仿°æ®æºå¼å
³/é»è®¤å
³é |
| | | enabled: false |
| | | url: |
| | | username: |
| | | password: |
| | | # åå§è¿æ¥æ° |
| | | initialSize: 5 |
| | | # æå°è¿æ¥æ± æ°é |
| | | minIdle: 10 |
| | | # æå¤§è¿æ¥æ± æ°é |
| | | maxActive: 20 |
| | | # é
ç½®è·åè¿æ¥çå¾
è¶
æ¶çæ¶é´ |
| | | maxWait: 60000 |
| | | # é
ç½®è¿æ¥è¶
æ¶æ¶é´ |
| | | connectTimeout: 30000 |
| | | # é
ç½®ç½ç»è¶
æ¶æ¶é´ |
| | | socketTimeout: 60000 |
| | | # é
ç½®é´éå¤ä¹
æè¿è¡ä¸æ¬¡æ£æµï¼æ£æµéè¦å
³éç空é²è¿æ¥ï¼å使¯æ¯«ç§ |
| | | timeBetweenEvictionRunsMillis: 60000 |
| | | # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿å°çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | minEvictableIdleTimeMillis: 300000 |
| | | # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿大çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | maxEvictableIdleTimeMillis: 900000 |
| | | # é
ç½®æ£æµè¿æ¥æ¯å¦ææ |
| | | validationQuery: SELECT 1 FROM DUAL |
| | | testWhileIdle: true |
| | | testOnBorrow: false |
| | | testOnReturn: false |
| | | webStatFilter: |
| | | enabled: true |
| | | statViewServlet: |
| | | enabled: true |
| | | # 设置ç½ååï¼ä¸å¡«åå
许ææè®¿é® |
| | | allow: |
| | | url-pattern: /druid/* |
| | | # æ§å¶å°ç®¡çç¨æ·ååå¯ç |
| | | login-username: ruoyi |
| | | login-password: 123456 |
| | | filter: |
| | | stat: |
| | | enabled: true |
| | | # æ
¢SQLè®°å½ |
| | | log-slow-sql: true |
| | | slow-sql-millis: 1000 |
| | | merge-sql: true |
| | | wall: |
| | | config: |
| | | multi-statement-allow: true |
| | | # èµæºä¿¡æ¯ |
| | | messages: |
| | | # å½é
åèµæºæä»¶è·¯å¾ |
| | | basename: i18n/messages |
| | | # æä»¶ä¸ä¼ |
| | | servlet: |
| | | multipart: |
| | | # å个æä»¶å¤§å° |
| | | max-file-size: 1GB |
| | | # 设置æ»ä¸ä¼ çæä»¶å¤§å° |
| | | max-request-size: 2GB |
| | | # æå¡æ¨¡å |
| | | devtools: |
| | | restart: |
| | | # çé¨ç½²å¼å
³ |
| | | enabled: false |
| | | # redis é
ç½® |
| | | redis: |
| | | # å°å |
| | | host: 127.0.0.1 |
| | | # host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | | database: 0 |
| | | # å¯ç |
| | | # password: root2022! |
| | | password: |
| | | |
| | | # è¿æ¥è¶
æ¶æ¶é´ |
| | | timeout: 10s |
| | | lettuce: |
| | | pool: |
| | | # è¿æ¥æ± ä¸çæå°ç©ºé²è¿æ¥ |
| | | min-idle: 0 |
| | | # è¿æ¥æ± ä¸çæå¤§ç©ºé²è¿æ¥ |
| | | max-idle: 8 |
| | | # è¿æ¥æ± çæå¤§æ°æ®åºè¿æ¥æ° |
| | | max-active: 8 |
| | | # #è¿æ¥æ± æå¤§é»å¡çå¾
æ¶é´ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼ |
| | | max-wait: -1ms |
| | | |
| | | # tokené
ç½® |
| | | token: |
| | | # 令çèªå®ä¹æ è¯ |
| | | header: Authorization |
| | | # 令çå¯é¥ |
| | | secret: abcdefghijklmnopqrstuvwxyz |
| | | # ä»¤çæææï¼é»è®¤30åéï¼ |
| | | expireTime: 450 |
| | | |
| | | # MyBatis Plusé
ç½® |
| | | mybatis-plus: |
| | | # æç´¢æå®å
å«å æ ¹æ®èªå·±çé¡¹ç®æ¥ |
| | | typeAliasesPackage: com.ruoyi.**.pojo |
| | | # é
ç½®mapperçæ«æï¼æ¾å°ææçmapper.xmlæ å°æä»¶ |
| | | mapperLocations: classpath*:mapper/**/*Mapper.xml |
| | | # å è½½å
¨å±çé
ç½®æä»¶ |
| | | configLocation: classpath:mybatis/mybatis-config.xml |
| | | global-config: |
| | | enable-sql-runner: true |
| | | db-config: |
| | | id-type: auto |
| | | |
| | | # PageHelperå页æä»¶ |
| | | pagehelper: |
| | | helperDialect: mysql |
| | | supportMethodsArguments: true |
| | | params: count=countSql |
| | | |
| | | # Swaggeré
ç½® |
| | | swagger: |
| | | # æ¯å¦å¼å¯swagger |
| | | enabled: true |
| | | # 请æ±åç¼ |
| | | pathMapping: /dev-api |
| | | |
| | | # 鲿¢XSSæ»å» |
| | | xss: |
| | | # è¿æ»¤å¼å
³ |
| | | enabled: true |
| | | # æé¤é¾æ¥ï¼å¤ä¸ªç¨éå·åéï¼ |
| | | excludes: /system/notice |
| | | # å¹é
龿¥ |
| | | urlPatterns: /system/*,/monitor/*,/tool/* |
| | | |
| | | # 代ç çæ |
| | | gen: |
| | | # ä½è
|
| | | author: ruoyi |
| | | # é»è®¤çæå
è·¯å¾ system éæ¹æèªå·±ç模ååç§° å¦ system monitor tool |
| | | packageName: com.ruoyi.project.system |
| | | # èªå¨å»é¤è¡¨åç¼ï¼é»è®¤æ¯true |
| | | autoRemovePre: false |
| | | # 表åç¼ï¼çæç±»åä¸ä¼å
å«è¡¨åç¼ï¼å¤ä¸ªç¨éå·åéï¼ |
| | | tablePrefix: sys_ |
| | | # æ¯å¦å
è®¸çææä»¶è¦çå°æ¬å°ï¼èªå®ä¹è·¯å¾ï¼ï¼é»è®¤ä¸å
许 |
| | | allowOverwrite: false |
| | | |
| | | file: |
| | | temp-dir: /javaWork/product-inventory-management/file/temp/uploads |
| | | upload-dir: /javaWork/product-inventory-management/file/prod/uploads |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-phmk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-phmk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6380 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-rzny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-rzny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-tjxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-tjxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-tymk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-tymk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6380 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-xyhb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-xyhb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6379 |
| | | # æ°æ®åºç´¢å¼ |
| | |
| | | druid: |
| | | # ä¸»åºæ°æ®æº |
| | | master: |
| | | url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-zyrq?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-zyrq?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: xd@123456.. |
| | | # ä»åºæ°æ®æº |
| | |
| | | redis: |
| | | # å°å |
| | | # host: 127.0.0.1 |
| | | host: 192.168.1.185 |
| | | host: 172.17.0.1 |
| | | # 端å£ï¼é»è®¤ä¸º6379 |
| | | port: 6380 |
| | | # æ°æ®åºç´¢å¼ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.basic.mapper.ProductModelMapper"> |
| | | |
| | | <!-- éç¨æ¥è¯¢æ å°ç»æ --> |
| | | <!-- éç¨æ¥è¯¢æ å°ç»æ --> |
| | | <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.ProductModel"> |
| | | <id column="id" property="id" /> |
| | | <result column="product_id" property="productId" /> |
| | | <result column="model" property="model" /> |
| | | <result column="unit" property="unit" /> |
| | | <result column="speculative_trading_name" property="speculativeTradingName" /> |
| | | <result column="tenant_id" property="tenantId" /> |
| | | <result column="product_name" property="productName" /> |
| | | <result column="product_id" property="productId" /> |
| | | <result column="product_code" property="productCode" /> |
| | | </resultMap> |
| | | <select id="listPageProductModel" resultType="com.ruoyi.basic.pojo.ProductModel"> |
| | | select pm.*,p.product_name |
| | | from product_model pm |
| | | left join product p on pm.product_id = p.id |
| | | <where> |
| | | <if test="c.model != null and c.model != ''"> |
| | | and pm.model like concat('%',#{c.model},'%') |
| | | </if> |
| | | <if test="c.productName != null and c.productName != ''"> |
| | | and p.product_name like concat('%',#{c.productName},'%') |
| | | </if> |
| | | </where> |
| | | order by pm.id |
| | | </select> |
| | | <select id="selectLatestRecord" resultType="com.ruoyi.basic.pojo.ProductModel"> |
| | | SELECT * FROM product_model |
| | | ORDER BY create_time DESC, id DESC |
| | | LIMIT 1 |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.basic.mapper.SupplierManageFileMapper"> |
| | | <select id="supplierManageFileListPage" resultType="com.ruoyi.basic.pojo.SupplierManageFile"> |
| | | select * |
| | | from supplier_manage_file |
| | | where supplier_id = #{supplierManageFile.supplierId} |
| | | </select> |
| | | </mapper> |
| | |
| | | T1.update_time, |
| | | T1.update_user, |
| | | T1.tenant_id, |
| | | T1.is_white, |
| | | T2.nick_name AS maintainUserName |
| | | FROM supplier_manage T1 |
| | | LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id |
| | | <where> |
| | | <if test="supplierManageDto.supplierName != null and supplierManageDto.supplierName != '' "> |
| | | AND T1.supplier_name LIKE CONCAT('%',#{supplierManageDto.supplierName},'%') |
| | | </if> |
| | | <if test="supplierManageDto.isWhite != null"> |
| | | AND T1.is_white = #{supplierManageDto.isWhite} |
| | | </if> |
| | | </where> |
| | | </select> |
| | |
| | | T1.update_time, |
| | | T1.update_user, |
| | | T1.tenant_id, |
| | | T1.is_white, |
| | | T2.nick_name AS maintainUserName |
| | | FROM supplier_manage T1 |
| | | LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id |
| | |
| | | <if test="supplierManageDto.supplierName != null and supplierManageDto.supplierName != '' "> |
| | | AND T1.supplier_name LIKE CONCAT('%',#{supplierManageDto.supplierName},'%') |
| | | </if> |
| | | <if test="supplierManageDto.isWhite != null"> |
| | | AND T1.is_white = #{supplierManageDto.isWhite} |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | |
| | | dl.device_name, |
| | | dl.device_model, |
| | | dl.supplier_name, |
| | | dl.device_brand, |
| | | dl.storage_location, |
| | | dl.unit, |
| | | dl.number, |
| | | dl.status, |
| | |
| | | dl.un_tax_including_price_total, |
| | | dl.create_time, |
| | | dl.update_time , |
| | | su.user_name AS createUser, |
| | | su.nick_name AS createUser, |
| | | dl.update_user, |
| | | dl.tenant_id |
| | | FROM device_ledger dl |
| | |
| | | dr.maintenance_name, |
| | | dr.maintenance_time, |
| | | dr.maintenance_result, |
| | | dr.maintenance_price, |
| | | dr.status, |
| | | dr.create_time, |
| | | dr.update_time, |
| | |
| | | </if> |
| | | <if test="deviceRepairDto.deviceModel != null"> |
| | | and dl.device_model like concat('%',#{deviceRepairDto.deviceModel},'%') |
| | | </if> |
| | | <if test="deviceRepairDto.status != null"> |
| | | and dr.status = #{deviceRepairDto.status} |
| | | </if> |
| | | <if test="deviceRepairDto.remark != null"> |
| | | and dr.remark like concat('%',#{deviceRepairDto.remark},'%') |
| | |
| | | dr.maintenance_name, |
| | | dr.maintenance_time, |
| | | dr.maintenance_result, |
| | | dr.maintenance_price, |
| | | dr.status, |
| | | dr.create_time, |
| | | dr.update_time, |
| | |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper"> |
| | | <select id="listPage" resultType="com.ruoyi.measuringinstrumentledger.dto.SparePartsDto"> |
| | | select sp.*,sp1.name as parentName from spare_parts sp |
| | | select sp.*,sp1.name as parentName |
| | | from spare_parts sp |
| | | left join spare_parts sp1 on sp1.id = sp.parent_id |
| | | <where> |
| | | <if test="spareParts.name != null"> |
| | | and name like concat('%',#{spareParts.name},'%') |
| | | <if test="spareParts.name != null and spareParts.name != ''"> |
| | | and sp.name like concat('%',#{spareParts.name},'%') |
| | | </if> |
| | | </where> |
| | | </select> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.procurementrecord.mapper.ProcurementExceptionRecordMapper"> |
| | | |
| | | </mapper> |
| | |
| | | and t1.create_time <= #{req.endDate} |
| | | </if> |
| | | </where> |
| | | group by t2.product_category,t2.specification_model,t1.unit_price |
| | | group by t3.supplier_name,t2.product_category,t2.specification_model,t1.unit_price |
| | | order by t1.create_time desc |
| | | </select> |
| | | <select id="listCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy"> |
| | |
| | | t1.update_time as uTime, |
| | | t1.create_by |
| | | from procurement_record_storage t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 2 |
| | | left join purchase_ledger t3 on t3.id = t2.sales_ledger_id |
| | | where t1.type = 1 |
| | | group by t3.supplier_name,t2.product_category,t2.specification_model |
| | | </select> |
| | | |
| | | <select id="listPageByProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto"> |
| | | select |
| | | t3.customer_contract_no, |
| | | t3.sales_contract_no, |
| | | t3.customer_name, |
| | | t2.product_category, |
| | | t1.id, |
| | | t1.sales_ledger_product_id, |
| | | t1.create_user, |
| | | t2.specification_model, |
| | | t2.unit, |
| | | t2.tax_rate, |
| | | t2.tax_inclusive_unit_price, |
| | | (t1.inbound_num * t2.tax_inclusive_unit_price) as taxInclusiveTotalPrice, |
| | | (t1.inbound_num * t2.tax_inclusive_unit_price - t1.inbound_num * t2.tax_inclusive_unit_price * t2.tax_rate / 100) as taxExclusiveTotalPrice, |
| | | t1.unit_price, |
| | | t1.total_price, |
| | | t1.inbound_batches, |
| | | t1.inbound_num, |
| | | t1.inbound_num as inboundNum0, |
| | | t1.create_time, |
| | | t1.update_time, |
| | | t1.create_by, |
| | | t2.warn_num, |
| | | t2.product_id |
| | | from procurement_record_storage t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 1 |
| | | left join sales_ledger t3 on t3.id = t2.sales_ledger_id |
| | | <where> |
| | | t1.type = 2 and t1.sales_ledger_product_id != 0 |
| | | <if test="req.customerName != null and req.customerName != ''"> |
| | | and t3.customer_name like concat('%',#{req.customerName},'%') |
| | | </if> |
| | | <if test="req.productCategory != null and req.productCategory != ''"> |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | </if> |
| | | <if test="req.timeStr != null and req.timeStr != ''"> |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | </if> |
| | | </where> |
| | | order by t1.create_time desc |
| | | </select> |
| | | <select id="listPageCopyByProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy"> |
| | | select |
| | | t3.customer_contract_no, |
| | | t3.sales_contract_no, |
| | | t3.customer_name, |
| | | t2.product_category, |
| | | t1.id, |
| | | t1.sales_ledger_product_id, |
| | | t1.create_user, |
| | | t2.specification_model, |
| | | t2.unit, |
| | | t2.min_stock, |
| | | t2.tax_rate, |
| | | t2.tax_inclusive_unit_price, |
| | | t2.tax_inclusive_total_price, |
| | | t2.tax_exclusive_total_price, |
| | | t1.inbound_batches, |
| | | sum(t1.total_price) as totalPrice, |
| | | t1.unit_price, |
| | | sum(t1.inbound_num) as inboundNum, |
| | | sum(t1.inbound_num) as inboundNum0, |
| | | t1.create_time, |
| | | t1.update_time, |
| | | t1.create_by, |
| | | t2.warn_num, |
| | | t2.product_id |
| | | from procurement_record_storage t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 1 |
| | | left join sales_ledger t3 on t3.id = t2.sales_ledger_id |
| | | <where> |
| | | t1.type = 2 |
| | | <if test="req.customerName != null and req.customerName != ''"> |
| | | and t3.customer_name like concat('%',#{req.customerName},'%') |
| | | </if> |
| | | <if test="req.productCategory != null and req.productCategory != ''"> |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | </if> |
| | | <if test="req.timeStr != null and req.timeStr != ''"> |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | </if> |
| | | <if test="req.salesLedgerProductId != null and req.salesLedgerProductId != ''"> |
| | | and t1.sales_ledger_product_id = #{req.salesLedgerProductId} |
| | | </if> |
| | | <if test="req.reportDate != null"> |
| | | and t1.create_time >= #{req.reportDate} and t1.create_time < DATE_ADD(#{req.reportDate}, INTERVAL 1 DAY) |
| | | </if> |
| | | <if test="req.startMonth != null"> |
| | | and t1.create_time >= #{req.startMonth} |
| | | </if> |
| | | <if test="req.endMonth != null"> |
| | | and t1.create_time <= #{req.endMonth} |
| | | </if> |
| | | <if test="req.startDate != null"> |
| | | and t1.create_time >= #{req.startDate} |
| | | </if> |
| | | <if test="req.endDate != null"> |
| | | and t1.create_time <= #{req.endDate} |
| | | </if> |
| | | </where> |
| | | group by t2.product_category,t2.specification_model,t1.unit_price |
| | | order by t1.create_time desc |
| | | </select> |
| | | <select id="listPagePRS" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy"> |
| | | select * |
| | | from procurement_record_storage t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id |
| | | <where> |
| | | 1=1 |
| | | <if test="req.productCategory != null and req.productCategory != ''"> |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | </if> |
| | | <if test="req.timeStr != null and req.timeStr != ''"> |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | </if> |
| | | <if test="req.salesLedgerProductId != null and req.salesLedgerProductId != ''"> |
| | | and t1.sales_ledger_product_id = #{req.salesLedgerProductId} |
| | | </if> |
| | | </where> |
| | | </select> |
| | | <select id="getSumQuantity" resultType="BigDecimal"> |
| | | select COALESCE(sum(inbound_num), 0) |
| | | from procurement_record_storage |
| | | where product_model_id = #{productModelId} |
| | | </select> |
| | | <select id="listPageByProductProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto"> |
| | | select |
| | | t1.*, |
| | | t2.model as specification_model , |
| | | t2.unit, |
| | | t3.product_name as product_category |
| | | from procurement_record_storage t1 |
| | | left join product_model t2 on t1.product_model_id = t2.id |
| | | left join product t3 on t2.product_id = t3.id |
| | | <where> |
| | | t1.type = 2 and t1.sales_ledger_product_id = 0 |
| | | <if test="req.productCategory != null and req.productCategory != ''"> |
| | | and t3.product_name like concat('%',#{req.productCategory},'%') |
| | | </if> |
| | | |
| | | <if test="req.timeStr != null and req.timeStr != ''"> |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | </if> |
| | | </where> |
| | | order by t1.create_time desc |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 1 |
| | | left join sales_ledger t3 on t3.id = t2.sales_ledger_id |
| | | where t1.type = 2 |
| | |
| | | <where> |
| | | and t1.type = 1 |
| | | <if test="req.supplierName != null and req.supplierName != ''"> |
| | | and t3.supplier_name like concat('%',#{req.supplierName},'%') |
| | | and t3.supplier_name like concat('%',#{req.supplierName},'%') |
| | | </if> |
| | | <if test="req.productCategory != null and req.productCategory != ''"> |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | </if> |
| | | <if test="req.timeStr != null and req.timeStr != ''"> |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | </if> |
| | | </where> |
| | | order by t1.create_time desc |
| | | </select> |
| | | <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto"> |
| | | select |
| | | t3.supplier_name, |
| | | t2.product_category, |
| | | t1.id, |
| | | t2.specification_model, |
| | | t2.unit, |
| | | t2.tax_rate, |
| | | t2.tax_inclusive_unit_price, |
| | | t2.tax_inclusive_total_price, |
| | | t2.tax_exclusive_total_price, |
| | | t1.inbound_num, |
| | | t1.create_time, |
| | | t1.create_time as time, |
| | | t1.create_by, |
| | | t4.box_num, |
| | | t4.carton_specifications, |
| | | t4.dollar_price |
| | | from procurement_record_out t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id |
| | | left join purchase_ledger t3 on t3.id = t2.sales_ledger_id |
| | | left join procurement_record_storage t4 on t4.id = t1.procurement_record_storage_id |
| | | select t3.supplier_name, |
| | | t2.product_category, |
| | | t1.id, |
| | | t2.specification_model, |
| | | t2.unit, |
| | | t2.tax_rate, |
| | | t2.tax_inclusive_unit_price, |
| | | t2.tax_inclusive_total_price, |
| | | t2.tax_exclusive_total_price, |
| | | t1.inbound_num, |
| | | t1.create_time, |
| | | t1.create_time as time, |
| | | t1.create_by |
| | | from procurement_record_out t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id |
| | | left join purchase_ledger t3 on t3.id = t2.sales_ledger_id |
| | | where t1.type = 1 |
| | | </select> |
| | | |
| | | <select id="listOne" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto"> |
| | | select |
| | | t3.customer_contract_no, |
| | | t3.sales_contract_no, |
| | | t3.customer_name, |
| | | t2.product_category, |
| | | t1.id, |
| | | t2.specification_model, |
| | | t2.unit, |
| | | t2.tax_rate, |
| | | t2.tax_inclusive_unit_price, |
| | | t2.tax_inclusive_total_price, |
| | | t2.tax_exclusive_total_price, |
| | | t1.inbound_num, |
| | | t1.create_time, |
| | | t1.create_time as time, |
| | | t1.create_by |
| | | from procurement_record_out t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id |
| | | left join sales_ledger t3 on t3.id = t2.sales_ledger_id |
| | | select t3.customer_contract_no, |
| | | t3.sales_contract_no, |
| | | t3.customer_name, |
| | | t2.product_category, |
| | | t1.id, |
| | | t2.specification_model, |
| | | t2.unit, |
| | | t2.tax_rate, |
| | | t2.tax_inclusive_unit_price, |
| | | t2.tax_inclusive_total_price, |
| | | t2.tax_exclusive_total_price, |
| | | t1.inbound_num, |
| | | t1.create_time, |
| | | t1.create_time as time, |
| | | t1.create_by |
| | | from procurement_record_out t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id |
| | | left join sales_ledger t3 on t3.id = t2.sales_ledger_id |
| | | where t1.type = 2 |
| | | </select> |
| | | |
| | | <select id="listTwo" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto"> |
| | | select |
| | | t1.id, |
| | | t1.`code`, |
| | | t3.supplier_name, |
| | | t2.product_category, |
| | | t2.specification_model, |
| | | t2.unit, |
| | | t2.tax_rate, |
| | | t2.tax_inclusive_unit_price, |
| | | t2.tax_inclusive_total_price, |
| | | t2.tax_exclusive_total_price, |
| | | t1.inbound_num, |
| | | t1.create_time, |
| | | t1.create_time as time, |
| | | t1.create_by |
| | | from procurement_record_out t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id |
| | | left join purchase_ledger t3 on t3.id = t2.sales_ledger_id |
| | | select t1.supplier_name, |
| | | t1.product_category, |
| | | t1.id, |
| | | t1.specification_model, |
| | | t1.unit, |
| | | t1.tax_rate, |
| | | t1.tax_inclusive_unit_price, |
| | | t1.tax_inclusive_total_price, |
| | | t1.tax_exclusive_total_price, |
| | | t1.inbound_num, |
| | | t1.create_time, |
| | | t1.create_time as time, |
| | | t1.create_by |
| | | from procurement_record_out t1 |
| | | where t1.type = 3 |
| | | </select> |
| | | <select id="listPageByProduct" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto"> |
| | |
| | | t1.create_time, |
| | | t1.create_by, |
| | | t4.unit_price, |
| | | t4.unit_price * t1.inbound_num as totalPrice |
| | | from procurement_record_out t1 |
| | | t4.unit_price * t1.inbound_num as totalPrice |
| | | from procurement_record_out t1 |
| | | left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 1 |
| | | left join sales_ledger t3 on t3.id = t2.sales_ledger_id |
| | | left join procurement_record_storage t4 on t4.id = t1.procurement_record_storage_id |
| | | <where> |
| | | and t1.type = 2 |
| | | <if test="req.customerName != null and req.customerName != ''"> |
| | | and t3.customer_name like concat('%',#{req.customerName},'%') |
| | | and t3.customer_name like concat('%',#{req.customerName},'%') |
| | | </if> |
| | | <if test="req.productCategory != null and req.productCategory != ''"> |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | </if> |
| | | <if test="req.timeStr != null and req.timeStr != ''"> |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | </if> |
| | | </where> |
| | | order by t1.create_time desc |
| | |
| | | t2.supplier_name, |
| | | t2.product_category, |
| | | t1.id, |
| | | t1.code, |
| | | t2.specification_model, |
| | | t2.unit, |
| | | t2.tax_rate, |
| | |
| | | t1.create_time, |
| | | t1.create_by, |
| | | t2.item_type, |
| | | t2.box_num, |
| | | t2.carton_specifications, |
| | | t2.dollar_price, |
| | | t2.url |
| | | from procurement_record_out t1 |
| | | t2.code |
| | | from procurement_record_out t1 |
| | | left join custom_storage t2 on t2.id = t1.procurement_record_storage_id |
| | | <where> |
| | | t1.type = 3 |
| | | <if test="req.supplierName != null and req.supplierName != ''"> |
| | | and t2.supplier_name like concat('%',#{req.supplierName},'%') |
| | | and t2.supplier_name like concat('%',#{req.supplierName},'%') |
| | | </if> |
| | | <if test="req.productCategory != null and req.productCategory != ''"> |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | and t2.product_category like concat('%',#{req.productCategory},'%') |
| | | </if> |
| | | <if test="req.timeStr != null and req.timeStr != ''"> |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | </if> |
| | | </where> |
| | | order by t1.create_time desc |
| | | </select> |
| | | |
| | | <select id="getSumQuantity" resultType="BigDecimal"> |
| | | select COALESCE(sum(inbound_num), 0) |
| | | from procurement_record_out |
| | | where |
| | | product_model_id = #{productModelId} |
| | | </select> |
| | | <select id="selectCode" resultType="com.ruoyi.procurementrecord.pojo.ProcurementRecordOut"> |
| | | select * |
| | | from procurement_record_out |
| | | where code like concat('%', #{format}) |
| | | order by id desc |
| | | limit 1 |
| | | </select> |
| | | <select id="listPageBySemiProduct" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto"> |
| | | select |
| | | t1.id, |
| | | t1.code, |
| | | t2.unit, |
| | | t1.inbound_num, |
| | | t1.create_time, |
| | | t1.create_by, |
| | | t2.model as specification_model, |
| | | t2.product_code, |
| | | t3.product_name as product_category |
| | | from procurement_record_out t1 |
| | | left join product_model t2 on t2.id = t1.product_model_id |
| | | left join product t3 on t3.id = t2.product_id |
| | | <where> |
| | | and t1.type = 4 |
| | | <if test="req.productCategory !=null and req.productCategory !=''"> |
| | | t3.product_name like concat('%',#{req.productCategory},'%') |
| | | </if> |
| | | <if test="req.timeStr != null and req.timeStr != ''"> |
| | | and t1.create_time like concat('%',#{req.timeStr},'%') |
| | | </if> |
| | | </where> |
| | | order by t1.create_time desc |
| | | </select> |
| | | |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProcessRouteItemMapper"> |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProcessRouteItem"> |
| | | <id property="id" column="id"/> |
| | | <result property="routeId" column="route_id"/> |
| | | <result property="processId" column="process_id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | <result property="dragSort" column="drag_sort"/> |
| | | </resultMap> |
| | | |
| | | <select id="listProcessRouteItemDto" resultType="com.ruoyi.production.dto.ProcessRouteItemDto"> |
| | | select pri.*, |
| | | pr.description , |
| | | pp.name as process_name, |
| | | pm.speculative_trading_name, |
| | | pm.product_id, |
| | | pm.model, |
| | | p.product_name, |
| | | pm.unit |
| | | from |
| | | process_route_item pri |
| | | left join product_model pm on pri.product_model_id = pm.id |
| | | left join product_process pp on pp.id = pri.process_id |
| | | left join product p on p.id = pm.product_id |
| | | left join process_route pr on pr.id = pri.route_id |
| | | where |
| | | pri.route_id = #{c.routeId} |
| | | order by pri.drag_sort |
| | | </select> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProcessRouteMapper"> |
| | | |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProcessRoute"> |
| | | <id property="id" column="id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="description" column="description"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | </resultMap> |
| | | |
| | | <select id="pageProcessRouteDto" resultType="com.ruoyi.production.dto.ProcessRouteDto"> |
| | | select ps.*, p.product_name,pm.product_id,pm.model,pb.bom_no |
| | | from process_route ps |
| | | left join product_bom pb on ps.bom_id = pb.id |
| | | left join product_model pm on ps.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | <where> |
| | | <if test="c.model != null and c.model != ''"> |
| | | and pm.model like concat('%',#{c.model},'%') |
| | | </if> |
| | | </where> |
| | | order by ps.id asc |
| | | </select> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductBomMapper"> |
| | | |
| | | <!-- éç¨æ¥è¯¢æ å°ç»æ --> |
| | | <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductBom"> |
| | | <id column="id" property="id"/> |
| | | <result column="product_model_id" property="productModelId"/> |
| | | <result column="bom_no" property="bomNo"/> |
| | | <result column="remark" property="remark"/> |
| | | <result column="version" property="version"/> |
| | | <result column="create_time" property="createTime"/> |
| | | <result column="update_time" property="updateTime"/> |
| | | <result column="create_user" property="createUser"/> |
| | | <result column="update_user" property="updateUser"/> |
| | | <result column="tenant_id" property="tenantId"/> |
| | | </resultMap> |
| | | <select id="listPage" resultType="com.ruoyi.production.dto.ProductBomDto"> |
| | | select * from (select pb.*, |
| | | pm.model productModelName, |
| | | p.product_name productName |
| | | from product_bom pb |
| | | left join product_model pm on pb.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id)A |
| | | where 1=1 |
| | | <if test="c.productModelName != null"> |
| | | and productModelName = #{c.productModelName} |
| | | </if> |
| | | <if test="c.productName != null"> |
| | | and productName = #{c.productName} |
| | | </if> |
| | | <if test="c.bomNo != null"> |
| | | and bom_no = #{c.bomNo} |
| | | </if> |
| | | <if test="c.version != null"> |
| | | and version = #{c.version} |
| | | </if> |
| | | </select> |
| | | <select id="getById" resultType="com.ruoyi.production.dto.ProductBomDto"> |
| | | select pb.*, |
| | | pm.model productModelName, |
| | | p.product_name productName |
| | | from product_bom pb |
| | | left join product_model pm on pb.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | </select> |
| | | |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductOrderMapper"> |
| | | |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductOrder"> |
| | | <id property="id" column="id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="salesLedgerId" column="sales_ledger_id"/> |
| | | <result property="routeId" column="route_id"/> |
| | | <result property="npsNo" column="nps_no"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | </resultMap> |
| | | <select id="pageProductOrder" resultType="com.ruoyi.production.dto.ProductOrderDto"> |
| | | select po.*, |
| | | sl.sales_contract_no, |
| | | sl.customer_name, |
| | | slp.product_category, |
| | | slp.specification_model, |
| | | ppr.process_route_code, |
| | | pb.bom_no, |
| | | ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus |
| | | from product_order po |
| | | left join sales_ledger sl on po.sales_ledger_id = sl.id |
| | | left join sales_ledger_product slp on po.product_model_id = slp.id |
| | | left join product_process_route ppr on po.id = ppr.product_order_id |
| | | left join product_bom pb on pb.id = ppr.bom_id |
| | | <where> |
| | | <if test="c.npsNo != null and c.npsNo != ''"> |
| | | and po.nps_no like concat('%',#{c.npsNo},'%') |
| | | </if> |
| | | <if test="c.salesContractNo != null and c.salesContractNo != ''"> |
| | | and sl.sales_contract_no like concat('%',#{c.salesContractNo},'%') |
| | | </if> |
| | | <if test="c.customerName != null and c.customerName != ''"> |
| | | and sl.customer_name like concat('%',#{c.customerName},'%') |
| | | </if> |
| | | <if test="c.productCategory != null and c.productCategory != ''"> |
| | | and slp.product_category like concat('%',#{c.productCategory},'%') |
| | | </if> |
| | | <if test="c.specificationModel != null and c.specificationModel != ''"> |
| | | and slp.specification_model like concat('%',#{c.specificationModel},'%') |
| | | </if> |
| | | </where> |
| | | </select> |
| | | <select id="productMainByOrderId" resultType="com.ruoyi.production.dto.ProductOrderDto"> |
| | | select po.*, |
| | | pwo.work_order_no, |
| | | pwo.report_work, |
| | | pwo.status, |
| | | pwo.quantity, |
| | | pwo.plan_quantity |
| | | from product_order po |
| | | left join product_work_order pwo on po.id = pwo.product_order_id |
| | | where po.id = #{c.id} |
| | | </select> |
| | | <select id="listProcessRoute" resultType="com.ruoyi.production.pojo.ProcessRoute"> |
| | | select pr.* |
| | | from process_route pr |
| | | left join product_model pm on pr.product_model_id = pm.id |
| | | left join sales_ledger_product slp on pm.id = slp.product_model_id |
| | | where slp.id = #{productModelId} |
| | | </select> |
| | | <select id="listProcessBom" resultType="com.ruoyi.production.dto.ProductStructureDto"> |
| | | select ps.id, |
| | | ps.product_model_id, |
| | | ps.process_id, |
| | | ps.unit_quantity, |
| | | ps.unit_quantity * po.quantity as demandedQuantity, |
| | | ps.unit, |
| | | p.product_name, |
| | | pp.name as process_name, |
| | | pm.product_id, |
| | | pm.model |
| | | from |
| | | product_structure ps |
| | | left join product_model pm on ps.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | left join product_process pp on ps.process_id = pp.id |
| | | left join product_process_route ppr on ps.bom_id = ppr.bom_id |
| | | left join product_order po on po.id = ppr.product_order_id |
| | | where ppr.product_order_id = #{orderId} |
| | | order by ps.id |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductProcessMapper"> |
| | | |
| | | <select id="listPage" resultType="com.ruoyi.production.dto.ProductProcessDto"> |
| | | SELECT |
| | | * |
| | | FROM |
| | | product_process p |
| | | <where> |
| | | <if test="productProcessDto.name != null and productProcessDto.name != '' "> |
| | | AND p.name LIKE CONCAT('%',#{productProcessDto.name},'%') |
| | | </if> |
| | | <if test="productProcessDto.no != null and productProcessDto.no != '' "> |
| | | AND p.no LIKE CONCAT('%',#{productProcessDto.no},'%') |
| | | </if> |
| | | </where> |
| | | order by p.id asc |
| | | </select> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductProcessRouteItemMapper"> |
| | | |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductProcessRouteItem"> |
| | | <id property="id" column="id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="updateTime" column="update_time"/> |
| | | </resultMap> |
| | | <select id="listItem" resultType="com.ruoyi.production.dto.ProductProcessRouteItemDto"> |
| | | select ppri.*, |
| | | pp.name as process_name, |
| | | pm.model, |
| | | pm.unit, |
| | | p.product_name |
| | | from product_process_route_item ppri |
| | | left join product_model pm on ppri.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | left join product_process pp on pp.id = ppri.process_id |
| | | where ppri.product_order_id = #{orderId} |
| | | order by ppri.drag_sort |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductProcessRouteMapper"> |
| | | |
| | | <!-- éç¨æ¥è¯¢æ å°ç»æ --> |
| | | <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductProcessRoute"> |
| | | <id column="id" property="id"/> |
| | | <result column="product_model_id" property="productModelId"/> |
| | | <result column="description" property="description"/> |
| | | <result column="tenant_id" property="tenantId"/> |
| | | <result column="create_time" property="createTime"/> |
| | | <result column="update_time" property="updateTime"/> |
| | | <result column="bom_id" property="bomId"/> |
| | | <result column="process_route_code" property="processRouteCode"/> |
| | | <result column="product_order_id" property="productOrderId"/> |
| | | </resultMap> |
| | | <select id="listMain" resultType="com.ruoyi.production.dto.ProcessRouteDto"> |
| | | select ppr.*, p.product_name, pm.product_id, pm.model, pb.bom_no |
| | | from product_process_route ppr |
| | | left join product_bom pb on ppr.bom_id = pb.id |
| | | left join product_model pm on ppr.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | where ppr.product_order_id = #{orderId} |
| | | </select> |
| | | |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductStructureMapper"> |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductStructure"> |
| | | <id property="id" column="id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="processId" column="process_id"/> |
| | | <result property="unitQuantity" column="unit_quantity"/> |
| | | <result property="demandedQuantity" column="demanded_quantity"/> |
| | | <result property="unit" column="unit"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | </resultMap> |
| | | <select id="listBybomId" resultType="com.ruoyi.production.dto.ProductStructureDto"> |
| | | select ps.*, |
| | | p.product_name, |
| | | pp.name as process_name, |
| | | pm.product_id, |
| | | pm.model |
| | | from |
| | | product_structure ps |
| | | left join product_model pm on ps.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | left join product_process pp on ps.process_id = pp.id |
| | | where ps.bom_id = #{bomId} |
| | | order by ps.id |
| | | </select> |
| | | <select id="listByproductModelId" resultType="com.ruoyi.production.dto.ProductStructureDto"> |
| | | select ps.*, |
| | | p.product_name, |
| | | pp.name as process_name, |
| | | pm.product_id, |
| | | pm.model |
| | | from |
| | | product_structure ps |
| | | left join product_bom pb on ps.bom_id = pb.id |
| | | left join product_model pm on ps.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | left join product_process pp on ps.process_id = pp.id |
| | | where pb.product_model_id = #{productModelId} |
| | | order by ps.id |
| | | </select> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductWorkOrderMapper"> |
| | | |
| | | <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductWorkOrder"> |
| | | <result column="id" property="id"/> |
| | | <result column="product_process_route_item_id" property="productProcessRouteItemId"/> |
| | | <result column="create_time" property="createTime"/> |
| | | <result column="update_time" property="updateTime"/> |
| | | <result column="work_order_no" property="workOrderNo"/> |
| | | <result column="status" property="status"/> |
| | | <result column="tenant_id" property="tenantId"/> |
| | | <result column="actual_end_time" property="planStartTime"/> |
| | | <result column="plan_end_time" property="planEndTime"/> |
| | | <result column="actual_start_time" property="actualStartTime"/> |
| | | <result column="actualEndTime" property="actualEndTime"/> |
| | | </resultMap> |
| | | |
| | | <select id="pageProductWorkOrder" resultType="com.ruoyi.production.dto.ProductWorkOrderDto"> |
| | | SELECT |
| | | pwo.*, |
| | | pp.NAME as processName, |
| | | pm.model, |
| | | pm.unit, |
| | | p.product_name AS productName, |
| | | po.nps_no AS productOrderNpsNo, |
| | | ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus |
| | | FROM |
| | | product_work_order pwo |
| | | LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id |
| | | LEFT JOIN product_order po ON po.id = pwo.product_order_id |
| | | LEFT JOIN product_process pp ON pp.id = ppri.process_id |
| | | LEFT JOIN product_model pm ON pm.id = ppri.product_model_id |
| | | LEFT JOIN product p ON p.id = pm.product_id |
| | | <where> |
| | | <if test="c.workOrderNo != null and c.workOrderNo != ''"> |
| | | pwo.work_order_no like concat('%',#{c.workOrderNo},'%') |
| | | </if> |
| | | </where> |
| | | </select> |
| | | <select id="selectProductWorkOrderDtoList" resultType="com.ruoyi.production.dto.ProductWorkOrderDto"> |
| | | select * |
| | | from product_work_order pwo |
| | | left join product_order po on po.id = pwo.product_order_id |
| | | </select> |
| | | |
| | | <update id="updatePlanQuantity" parameterType="java.util.Map"> |
| | | UPDATE product_work_order |
| | | SET |
| | | report_work = #{reportWork}, |
| | | plan_quantity = plan_quantity - #{deductQuantity} |
| | | WHERE id = #{workOrderId} |
| | | </update> |
| | | |
| | | <update id="rollbackPlanQuantity" parameterType="java.lang.Long"> |
| | | UPDATE product_work_order pwo |
| | | INNER JOIN production_product_main ppm |
| | | ON pwo.id = ppm.work_order_id |
| | | AND ppm.id = #{productMainId} |
| | | INNER JOIN production_product_output ppo |
| | | ON ppo.product_main_id = ppm.id |
| | | SET |
| | | pwo.plan_quantity = pwo.plan_quantity + ppo.quantity, |
| | | pwo.report_work = 0, |
| | | pwo.quantity = 0 |
| | | WHERE pwo.id = ppm.work_order_id |
| | | </update> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductionProductInputMapper"> |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductionProductInput"> |
| | | <id property="id" column="id"/> |
| | | <result property="productMainId" column="product_main_id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="quantity" column="quantity"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | </resultMap> |
| | | <select id="listPageProductionProductInputDto" resultType="com.ruoyi.production.dto.ProductionProductInputDto"> |
| | | select ppi.*, |
| | | pm.model as model, |
| | | ppm.product_no as productNo |
| | | from |
| | | production_product_input ppi |
| | | left join production_product_main ppm on ppm.id = ppi.product_main_id |
| | | left join product_model pm on pm.id = ppi.product_model_id |
| | | <where> |
| | | <if test="c.productMainId != null and c.productMainId > 0"> |
| | | and ppm.id = #{c.productMainId} |
| | | </if> |
| | | </where> |
| | | order by ppi.id |
| | | </select> |
| | | |
| | | <delete id="deleteByProductMainIds" parameterType="java.util.List"> |
| | | DELETE FROM production_product_input |
| | | WHERE product_main_id IN |
| | | <foreach collection="productMainIds" item="id" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </delete> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductionProductMainMapper"> |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductionProductMain"> |
| | | <id property="id" column="id"/> |
| | | <result property="productNo" column="product_no"/> |
| | | <result property="userId" column="user_id"/> |
| | | <result property="workOrderId" column="work_order_id"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="status" column="status"/> |
| | | </resultMap> |
| | | |
| | | <select id="listPageProductionProductMainDto" resultType="com.ruoyi.production.dto.ProductionProductMainDto"> |
| | | select ppm.*, |
| | | pwo.work_order_no as workOrderNo, |
| | | pwo.status as workOrderStatus, |
| | | u.nick_name as nickName |
| | | from |
| | | production_product_main ppm |
| | | left join product_work_order pwo on pwo.id = ppm.work_order_id |
| | | left join sys_user u on u.user_id = ppm.user_id |
| | | <where> |
| | | <if test="c.nickName != null and c.nickName != ''"> |
| | | and u.nick_name like concat('%',#{c.nickName},'%') |
| | | </if> |
| | | <if test="c.workOrderNo != null and c.workOrderNo != ''"> |
| | | and pwo.work_order_no like concat('%',#{c.workOrderNo},'%') |
| | | </if> |
| | | <if test="c.workOrderStatus != null and c.workOrderStatus != ''"> |
| | | and pwo.status = #{c.workOrderStatus} |
| | | </if> |
| | | <if test="c.status != null and c.status != ''"> |
| | | and ppm.status = #{c.status} |
| | | </if> |
| | | </where> |
| | | order by ppm.id |
| | | </select> |
| | | |
| | | <delete id="deleteByWorkOrderIds" parameterType="java.util.List"> |
| | | DELETE FROM production_product_main |
| | | WHERE work_order_id IN |
| | | <foreach collection="workOrderIds" item="id" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </delete> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.production.mapper.ProductionProductOutputMapper"> |
| | | |
| | | <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductionProductOutput"> |
| | | <id property="id" column="id"/> |
| | | <result property="productMainId" column="product_main_id"/> |
| | | <result property="productModelId" column="product_model_id"/> |
| | | <result property="quantity" column="quantity"/> |
| | | <result property="tenantId" column="tenant_id"/> |
| | | <result property="createTime" column="create_time"/> |
| | | </resultMap> |
| | | |
| | | <select id="listPageProductionProductOutputDto" resultType="com.ruoyi.production.dto.ProductionProductOutputDto"> |
| | | select ppo.*, |
| | | pm.model as model, |
| | | ppm.product_no as productNo |
| | | from |
| | | production_product_output ppo |
| | | left join production_product_main ppm on ppm.id = ppo.product_main_id |
| | | left join product_model pm on pm.id = ppo.product_model_id |
| | | <where> |
| | | <if test="c.productMainId != null and c.productMainId > 0"> |
| | | and ppm.id = #{c.productMainId} |
| | | </if> |
| | | </where> |
| | | order by ppo.id |
| | | </select> |
| | | |
| | | <delete id="deleteByProductMainIds" parameterType="java.util.List"> |
| | | DELETE FROM production_product_output |
| | | WHERE product_main_id IN |
| | | <foreach collection="productMainIds" item="id" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </delete> |
| | | </mapper> |
| | |
| | | </if> |
| | | </where> |
| | | group by t4.id |
| | | order by t4.update_time desc |
| | | order by t4.scheduling_date desc |
| | | </select> |
| | | </mapper> |
| | |
| | | T2.quantity, |
| | | T2.product_category, |
| | | T2.specification_model, |
| | | T2.speculative_trading_name, |
| | | T2.unit |
| | | FROM |
| | | sales_ledger_product T2 |
| | |
| | | </if> |
| | | </where> |
| | | GROUP BY T2.id |
| | | <if test="salesLedgerDto.status != null and salesLedgerDto.status.equals('true')"> |
| | | HAVING quantity - schedulingNum > 0 |
| | | </if> |
| | | order by T1.entry_date desc |
| | | </select> |
| | | <select id="list" resultType="com.ruoyi.production.dto.SalesLedgerSchedulingDto"> |
| | | SELECT |
| | |
| | | T2.status, |
| | | T2.scheduling_user_id, |
| | | T2.scheduling_user_name, |
| | | T2.speculative_trading_name, |
| | | T2.scheduling_date, |
| | | ifNull(T2.scheduling_num,0) AS schedulingNum, |
| | | ifNull(T2.finished_num,0) AS successNum, |
| | |
| | | T1.customer_name, |
| | | t3.product_category, |
| | | t3.specification_model, |
| | | t3.unit |
| | | t3.unit, |
| | | T2.production_line |
| | | FROM |
| | | sales_ledger_scheduling T2 |
| | | LEFT JOIN sales_ledger T1 ON T1.id = T2.sales_ledger_id |
| | |
| | | AND T2.scheduling_date <= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d') |
| | | </if> |
| | | </where> |
| | | order by T2.status asc |
| | | order by T2.scheduling_date desc |
| | | </select> |
| | | </mapper> |
| | |
| | | t4.finished_num, |
| | | t4.work_hours, |
| | | t4.process, |
| | | t4.type, |
| | | t4.remark, |
| | | t4.receive, |
| | | T1.sales_contract_no, |
| | | T1.customer_contract_no, |
| | | T1.project_name, |
| | | T1.customer_name, |
| | | t3.product_category, |
| | | t3.specification_model, |
| | | t3.unit |
| | | t3.unit, |
| | | t2.speculative_trading_name, |
| | | t4.production_line |
| | | FROM |
| | | sales_ledger_work t4 |
| | | LEFT JOIN sales_ledger T1 ON T1.id = t4.sales_ledger_id |
| | | left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id |
| | | left join sales_ledger_scheduling t2 on t4.sales_ledger_scheduling_id = t2.id |
| | | <where> |
| | | t3.type = 1 |
| | | <if test="salesLedgerDto.status != null and salesLedgerDto.status != '' "> |
| | |
| | | AND t4.scheduling_date <= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d') |
| | | </if> |
| | | </where> |
| | | order by t4.update_time desc |
| | | order by t4.scheduling_date desc |
| | | </select> |
| | | </mapper> |
| | |
| | | LEFT JOIN invoice_registration_product pr ON pr.id = il.invoice_registration_product_id |
| | | WHERE il.invoice_no IS NOT NULL |
| | | AND invoice_type = 'å¢ä¸ç¥¨' |
| | | AND DATE_FORMAT(il.invoice_date, '%Y-%m') IS NOT NULL -- æ°å¢ï¼è¿æ»¤month为NULLçæ
|
| | | GROUP BY DATE_FORMAT(il.invoice_date, '%Y-%m') |
| | | ) a1 |
| | | LEFT JOIN ( |
| | |
| | | LEFT JOIN invoice_registration_product pr ON pr.id = il.invoice_registration_product_id |
| | | WHERE il.invoice_no IS NOT NULL |
| | | AND invoice_type = 'å¢ä¸ç¥¨' |
| | | AND DATE_FORMAT(il.invoice_date, '%Y-%m') IS NOT NULL -- æ°å¢ï¼è¿æ»¤month为NULLçæ
|
| | | GROUP BY DATE_FORMAT(il.invoice_date, '%Y-%m') |
| | | ) a1 ON a1.month = a2.month |
| | | WHERE a1.month IS NULL |
| | | ORDER BY month |
| | | )as a |
| | | <where> |
| | | a.month is not null |
| | | <if test="month != null"> |
| | | and a.month = #{month} |
| | | </if> |
| | |
| | | FROM |
| | | payment_registration T1 |
| | | LEFT JOIN purchase_ledger t4 ON t4.id = T1.purchase_ledger_id |
| | | LEFT JOIN |
| | | supplier_manage T2 ON T1.supplier_id = T2.id |
| | | LEFT JOIN |
| | | sys_user T3 ON T3.user_id = T1.registrant_id |
| | | left join ticket_registration t5 on t5.purchase_ledger_id = T1.purchase_ledger_id |
| | | LEFT JOIN supplier_manage T2 ON T1.supplier_id = T2.id |
| | | LEFT JOIN sys_user T3 ON T3.user_id = T1.registrant_id |
| | | left join ticket_registration t5 on t5.id = T1.ticket_registration_id |
| | | <where> |
| | | <if test="params.searchText != null and params.searchText != '' "> |
| | | AND T2.supplier_name LIKE CONCAT('%',#{params.searchText},'%') |
| | |
| | | left join product_model pm on pm.id = pr.product_model_id |
| | | WHERE type = 2 |
| | | <if test="c.salesContractNo != null and c.salesContractNo != ''"> |
| | | and sl.sales_contract_no = #{c.salesContractNo} |
| | | and sl.sales_contract_no like concat('%',#{c.salesContractNo},'%') |
| | | </if> |
| | | <if test="c.supplierName != null and c.supplierName != ''"> |
| | | and pl.supplier_name = #{c.supplierName} |
| | | and pl.supplier_name like concat('%',#{c.supplierName},'%') |
| | | </if> |
| | | <if test="c.createdAtStart != null and c.createdAtStart != ''"> |
| | | and pr.created_at >= date_format(#{c.createdAtStart},'%Y-%m-%d hh:mm:ss') |
| | | and pr.created_at >= str_to_date(#{c.createdAtStart}, '%Y-%m-%d') |
| | | </if> |
| | | <if test="c.createdAtEnd != null and c.createdAtEnd != ''"> |
| | | and pr.created_at <= date_format(#{c.createdAtEnd},'%Y-%m-%d hh:mm:ss') |
| | | and pr.created_at < date_add(str_to_date(#{c.createdAtEnd}, '%Y-%m-%d'), interval 1 day) |
| | | </if> |
| | | <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''"> |
| | | and tr.purchase_contract_number like concat('%',#{c.purchaseContractNumber},'%') |
| | |
| | | left join sales_ledger sl on sl.id = pl.sales_ledger_id |
| | | left join ticket_registration tr on tr.id = pr.ticket_registration_id |
| | | left join product_model pm on pm.id = pr.product_model_id |
| | | |
| | | WHERE type = 2 and pr.id = #{id} |
| | | WHERE type = 2 |
| | | <if test="c.purchaseLedgerId != null and c.purchaseLedgerId != ''"> |
| | | and pr.purchase_ledger_id = #{c.purchaseLedgerId} |
| | | </if> |
| | | <if test="c.productModelId != null and c.productModelId != ''"> |
| | | and pm.id = #{c.productModelId} |
| | | </if> |
| | | </select> |
| | | </mapper> |
| | |
| | | pl.id, |
| | | pl.purchase_contract_number , |
| | | pl.sales_contract_no, |
| | | pl.supplier_id, |
| | | pl.supplier_name, |
| | | pl.project_name, |
| | | pl.contract_amount, |
| | | sum(pr.tickets_amount)as receipt_payment_amount, |
| | | pl.contract_amount-sum(pr.tickets_amount) AS unReceipt_payment_amount, |
| | | sum(tr.invoice_amount)as receipt_payment_amount, |
| | | pl.contract_amount-sum(tr.invoice_amount) AS unReceipt_payment_amount, |
| | | pl.entry_date, |
| | | pl.recorder_id, |
| | | pl.recorder_name, |
| | | pl.template_name, |
| | | pl.approver_id, |
| | | sm.is_white, |
| | | pl.approval_status, |
| | | pl.payment_method |
| | | from purchase_ledger pl |
| | | left join sales_ledger_product slp on slp.sales_ledger_id = pl.id and slp.type=2 |
| | | left join product_record pr on pl.id = pr.purchase_ledger_id |
| | | left join ticket_registration tr on tr.id = pr.ticket_registration_id |
| | | left join supplier_manage sm on pl.supplier_id = sm.id |
| | | <where> |
| | | 1 = 1 |
| | | <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''"> |
| | | and pl.purchase_contract_number like concat('%',#{c.purchaseContractNumber},'%') |
| | | </if> |
| | | <if test="c.approvalStatus != null and c.approvalStatus != ''"> |
| | | and pl.approval_status = #{c.approvalStatus} |
| | | </if> |
| | | <if test="c.supplierName != null and c.supplierName != ''"> |
| | | and pl.supplier_name like concat('%',#{c.supplierName},'%') |
| | |
| | | pl.project_name,pl.entry_date, |
| | | pl.recorder_name, |
| | | pl.contract_amount |
| | | order by pl.entry_date desc |
| | | |
| | | </select> |
| | | <select id="getPaymentRegistrationDtoById" resultType="com.ruoyi.purchase.dto.PaymentRegistrationDto"> |
| | |
| | | where |
| | | inspect_type=#{qualityInspect.inspectType} |
| | | <if test="qualityInspect.supplier != null and qualityInspect.supplier != '' "> |
| | | AND supplier = #{qualityInspect.supplier} |
| | | AND supplier like concat('%',#{qualityInspect.supplier},'%') |
| | | </if> |
| | | <if test="qualityInspect.customer != null and qualityInspect.customer != '' "> |
| | | AND customer = #{qualityInspect.customer} |
| | | AND customer like concat('%',#{qualityInspect.customer},'%') |
| | | </if> |
| | | <if test="qualityInspect.process != null and qualityInspect.process != '' "> |
| | | AND process = #{qualityInspect.process} |
| | | AND process like concat('%',#{qualityInspect.process},'%') |
| | | </if> |
| | | <if test="qualityInspect.productName != null and qualityInspect.productName != '' "> |
| | | AND product_name = #{qualityInspect.productName} |
| | | AND product_name like concat('%',#{qualityInspect.productName},'%') |
| | | </if> |
| | | <if test="qualityInspect.entryDateStart != null and qualityInspect.entryDateStart != '' "> |
| | | AND check_time >= DATE_FORMAT(#{qualityInspect.entryDateStart},'%Y-%m-%d') |
| | |
| | | <if test="qualityInspect.entryDateEnd != null and qualityInspect.entryDateEnd != '' "> |
| | | AND check_time <= DATE_FORMAT(#{qualityInspect.entryDateEnd},'%Y-%m-%d') |
| | | </if> |
| | | ORDER BY check_time DESC |
| | | </select> |
| | | <select id="qualityInspectExport" resultType="com.ruoyi.quality.pojo.QualityInspect"> |
| | | SELECT |
| | |
| | | AND product_name = #{qualityInspect.productName} |
| | | </if> |
| | | </select> |
| | | |
| | | <delete id="deleteByProductMainIds"> |
| | | DELETE FROM quality_inspect |
| | | WHERE product_main_id IN |
| | | <foreach collection="productMainIds" item="id" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | </mapper> |
| | |
| | | ) |
| | | </if> |
| | | <if test="invoiceRegistrationProductDto.invoiceDateStart != null and invoiceRegistrationProductDto.invoiceDateStart != ''"> |
| | | AND T3.invoice_date >= date_format(#{invoiceRegistrationProductDto.invoiceDateStart}, '%Y-%m-%d') |
| | | AND T3.invoice_date >= str_to_date(#{invoiceRegistrationProductDto.invoiceDateStart}, '%Y-%m-%d') |
| | | </if> |
| | | <if test="invoiceRegistrationProductDto.invoiceDateEnd != null and invoiceRegistrationProductDto.invoiceDateEnd != ''"> |
| | | AND T3.invoice_date <= date_format(#{invoiceRegistrationProductDto.invoiceDateEnd}, '%Y-%m-%d') |
| | | AND T3.invoice_date < date_add(str_to_date(#{invoiceRegistrationProductDto.invoiceDateEnd}, '%Y-%m-%d'), interval 1 day) |
| | | </if> |
| | | <if test="invoiceRegistrationProductDto.createTimeStart != null "> |
| | | AND T1.create_time like CONCAT(#{invoiceRegistrationProductDto.createTimeStart}, '%') |
| | |
| | | |
| | | <select id="bindInvoiceNoRegPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto"> |
| | | SELECT |
| | | T1.id , |
| | | T1.invoice_no , |
| | | T1.invoice_total , |
| | | T1.id, |
| | | T1.invoice_no, |
| | | T1.invoice_total, |
| | | T3.project_name, |
| | | T1.invoice_person , |
| | | T1.invoice_date , |
| | | T1.create_time , |
| | | T1.create_user , |
| | | T1.update_time , |
| | | T1.update_user , |
| | | T1.tenant_id , |
| | | T1.invoice_person, |
| | | T1.invoice_date, |
| | | T1.create_time, |
| | | T1.create_user, |
| | | T1.update_time, |
| | | T1.update_user, |
| | | T1.tenant_id, |
| | | T2.tax_rate, |
| | | T3.sales_contract_no, |
| | | T3.customer_contract_no, |
| | | T3.customer_name, |
| | | T4.invoiceFileName, |
| | | T5.product_category, |
| | | IFNULL(T6.receipt_payment_amount_total ,0) AS receipt_payment_amount_total, |
| | | (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total ,0)) AS no_receipt_amount |
| | | IFNULL(T6.receipt_payment_amount_total, 0) AS receipt_payment_amount_total, |
| | | (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total, 0)) AS noReceiptAmount |
| | | FROM invoice_ledger T1 |
| | | LEFT JOIN invoice_registration_product T2 ON T2.id = T1.invoice_registration_product_id |
| | | LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | invoice_ledger_id, |
| | | GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName |
| | | FROM invoice_ledger_file GROUP BY invoice_ledger_id |
| | | GROUP_CONCAT(name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName |
| | | FROM invoice_ledger_file |
| | | GROUP BY invoice_ledger_id |
| | | ) T4 ON T4.invoice_ledger_id = T1.id |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id |
| | | LEFT JOIN ( |
| | | SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP |
| | | BY invoice_ledger_id |
| | | SELECT |
| | | SUM(receipt_payment_amount) AS receipt_payment_amount_total, |
| | | invoice_ledger_id |
| | | FROM receipt_payment |
| | | GROUP BY invoice_ledger_id |
| | | ) T6 ON T1.id = T6.invoice_ledger_id |
| | | <where> |
| | | <if test="req.customerName != null and req.customerName !=''"> |
| | |
| | | AND T1.invoice_date >= DATE_FORMAT(#{req.invoiceDateStart},'%Y-%m-%d') |
| | | </if> |
| | | <if test="req.invoiceDateEnd != null and req.invoiceDateEnd != '' "> |
| | | AND T1.invoice_date <= DATE_FORMAT(#{req.invoiceDateEnd},'%Y-%m-%d') |
| | | AND T1.invoice_date <= DATE_FORMAT(#{req.invoiceDateEnd},'%Y-%m-%d') |
| | | </if> |
| | | <if test="req.status != null and req.status"> |
| | | and (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total, 0)) > 0 |
| | | </if> |
| | | </where> |
| | | ORDER BY T2.create_time DESC |
| | | |
| | | ORDER BY IFNULL(T2.create_time, T1.create_time) DESC |
| | | |
| | | </select> |
| | | |
| | | <select id="invoiceInfo" resultType="com.ruoyi.sales.dto.InvoiceLedgerDto"> |
| | |
| | | AND T1.entry_date <= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d') |
| | | </if> |
| | | </where> |
| | | order by T1.entry_date desc |
| | | </select> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.sales.mapper.SalesLedgerProductMapper"> |
| | | |
| | | <select id="selectSalesLedgerProductList" resultType="com.ruoyi.sales.pojo.SalesLedgerProduct"> |
| | | SELECT |
| | | T1.*, |
| | | t3.shipping_car_number, |
| | | t3.shipping_date |
| | | FROM |
| | | sales_ledger_product T1 |
| | | left join shipping_info t3 on T1.id = t3.sales_ledger_product_id |
| | | <where> |
| | | 1=1 |
| | | <if test="salesLedgerProduct.salesLedgerId != null and salesLedgerProduct.salesLedgerId != '' "> |
| | | AND T1.sales_ledger_id = #{salesLedgerProduct.salesLedgerId} |
| | | </if> |
| | | <if test="salesLedgerProduct.type != null and salesLedgerProduct.type != '' "> |
| | | AND T1.type = #{salesLedgerProduct.type} |
| | | </if> |
| | | </where> |
| | | </select> |
| | | <select id="selectSalesLedgerProductByMainId" resultType="com.ruoyi.sales.pojo.SalesLedgerProduct"> |
| | | select slp.* |
| | | from quality_inspect qi |
| | | left join production_product_main ppm on qi.product_main_id = ppm.id |
| | | left join product_work_order pwo on ppm.work_order_id = pwo.id |
| | | left join product_order po on pwo.product_order_id = po.id |
| | | left join sales_ledger_product slp on po.product_model_id = slp.id |
| | | where qi.product_main_id = #{productMainId} |
| | | |
| | | |
| | | </select> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.sales.mapper.ShipmentApprovalMapper"> |
| | | |
| | | <select id="listPage" resultType="com.ruoyi.sales.pojo.ShipmentApproval"> |
| | | SELECT *, |
| | | si.shipping_car_number, |
| | | T2.nick_name AS entry_person_name |
| | | FROM shipment_approval sa |
| | | LEFT JOIN shipping_info si ON sa.shipping_info_id = si.id |
| | | LEFT JOIN sales_ledger sl ON sa.sales_ledger_id = sl.id |
| | | LEFT JOIN sales_ledger_product slp ON sa.sales_ledger_product_id = slp.id |
| | | LEFT JOIN sys_user T2 ON sl.entry_person = T2.user_id |
| | | <where> |
| | | 1=1 |
| | | <if test="req.approveStatus != null and req.approveStatus != '' "> |
| | | AND sa.approve_status = #{req.approveStatus} |
| | | </if> |
| | | <if test="req.salesContractNo != null and req.salesContractNo != '' "> |
| | | AND sl.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%') |
| | | </if> |
| | | </where> |
| | | </select> |
| | | </mapper> |
| | |
| | | |
| | | <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffScheduling"> |
| | | <id property="id" column="id" jdbcType="INTEGER"/> |
| | | <result property="staffId" column="staff_id" jdbcType="INTEGER"/> |
| | | <result property="staffId" column="staff_id" jdbcType="VARCHAR"/> |
| | | <result property="department" column="department" jdbcType="INTEGER"/> |
| | | <result property="shiftType" column="shift_type" jdbcType="INTEGER"/> |
| | | <result property="workDate" column="work_date" jdbcType="DATE"/> |
| | |
| | | </sql> |
| | | <select id="listPage" resultType="com.ruoyi.staff.dto.StaffSchedulingDto"> |
| | | SELECT |
| | | t1.*,t2.staff_name as 'staff_name' ,t2.staff_no as 'staff_no' |
| | | t1.* |
| | | FROM staff_scheduling t1 |
| | | left join staff_join_leave_record t2 on t1.staff_id = t2.id |
| | | where 1=1 |
| | | <if test="vo.staffName != null and vo.staffName != '' "> |
| | | AND t2.staff_name LIKE CONCAT('%', #{vo.staffName}, '%') |
| | | AND t1.staff_name LIKE CONCAT('%', #{vo.staffName}, '%') |
| | | </if> |
| | | <if test="vo.shiftType != null and vo.shiftType != '' "> |
| | | AND t1.shift_type = #{vo.shiftType} |
| | |
| | | sys_user_dept T1 |
| | | LEFT JOIN sys_dept T2 ON T1.dept_id = T2.dept_id |
| | | <where> |
| | | T1.dept_id IN (select dept_id from sys_dept where parent_id = 100) |
| | | T1.dept_id IN (select dept_id from sys_dept where parent_id != 0) |
| | | <if test="userDeptVo.userId != null"> |
| | | AND T1.user_id = #{userDeptVo.userId} |
| | | </if> |
| | |
| | | #{id} |
| | | </foreach> |
| | | </select> |
| | | <select id="selectUserByNickName" resultType="com.ruoyi.project.system.domain.SysUser" |
| | | parameterType="java.lang.String"> |
| | | <include refid="selectUserVo"/> |
| | | where u.nick_name = #{nickName} and u.del_flag = '0' |
| | | limit 1 |
| | | </select> |
| | | |
| | | <insert id="insertUser" parameterType="com.ruoyi.project.system.domain.SysUser" useGeneratedKeys="true" keyProperty="userId"> |
| | | insert into sys_user( |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
| | | <?mso-application progid="Word.Document"?> |
| | | <w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve" xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData"><o:DocumentProperties><o:Title>ç¤ºèææ¬</o:Title><o:Author>çªèè±å</o:Author><o:LastAuthor>æ¸
è¾</o:LastAuthor><o:Revision>2</o:Revision><o:LastPrinted>2024-12-23T10:36:34Z</o:LastPrinted><o:Created>2023-03-23T04:01:00Z</o:Created><o:LastSaved>2025-11-07T06:33:56Z</o:LastSaved><o:TotalTime>15840</o:TotalTime><o:Pages>10</o:Pages><o:Words>2904</o:Words><o:Characters>3444</o:Characters><o:Company>çªèè±å</o:Company><o:Lines>30</o:Lines><o:Paragraphs>8</o:Paragraphs><o:CharactersWithSpaces>4368</o:CharactersWithSpaces><o:Version>14</o:Version></o:DocumentProperties><o:CustomDocumentProperties><o:KSOProductBuildVer dt:dt="string">2052-12.1.0.23125</o:KSOProductBuildVer><o:ICV dt:dt="string">2D97A42FF446489287C6900713CFD441_13</o:ICV><o:KSOTemplateDocerSaveRecord dt:dt="string">eyJoZGlkIjoiZTU3YWIwYTMwZDJkM2QzZDNhMDgzMDIyZjE1NjgxZmYiLCJ1c2VySWQiOiIxMTMzMDExODUxIn0=</o:KSOTemplateDocerSaveRecord></o:CustomDocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="å®ä½" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Times New Roman"><w:panose-1 w:val="02020603050405020304"/><w:charset w:val="00"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/></w:font><w:font w:name="å®ä½"><w:panose-1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="00000203" w:usb-1="288F0000" w:usb-2="00000006" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Arial"><w:panose-1 w:val="020B0604020202020204"/><w:charset w:val="01"/><w:family w:val="SWiss"/><w:pitch w:val="Default"/><w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/></w:font><w:font w:name="é»ä½"><w:panose-1 w:val="02010609060101010101"/><w:charset w:val="86"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="800002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/></w:font><w:font w:name="Courier New"><w:panose-1 w:val="02070309020205020404"/><w:charset w:val="01"/><w:family w:val="Modern"/><w:pitch w:val="Default"/><w:sig w:usb-0="E0002EFF" w:usb-1="C0007843" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/></w:font><w:font w:name="Symbol"><w:panose-1 w:val="05050102010706020507"/><w:charset w:val="02"/><w:family w:val="Roman"/><w:pitch w:val="Default"/><w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Calibri"><w:panose-1 w:val="020F0502020204030204"/><w:charset w:val="00"/><w:family w:val="SWiss"/><w:pitch w:val="Default"/><w:sig w:usb-0="E4002EFF" w:usb-1="C000247B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="200001FF" w:csb-1="00000000"/></w:font><w:font w:name="仿å®"><w:panose-1 w:val="02010609060101010101"/><w:charset w:val="86"/><w:family w:val="Modern"/><w:pitch w:val="Default"/><w:sig w:usb-0="800002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/></w:font><w:font w:name="微软é
é»"><w:panose-1 w:val="020B0503020204020204"/><w:charset w:val="86"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="80000287" w:usb-1="2ACF3C50" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="0004001F" w:csb-1="00000000"/></w:font><w:font w:name="Tahoma"><w:panose-1 w:val="020B0604030504040204"/><w:charset w:val="00"/><w:family w:val="Auto"/><w:pitch w:val="Default"/><w:sig w:usb-0="E1002EFF" w:usb-1="C000605B" w:usb-2="00000029" w:usb-3="00000000" w:csb-0="200101FF" w:csb-1="20280000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:plt w:val="SingleLevel"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1ã"/><w:lvlJc w:val="left"/></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:plt w:val="SingleLevel"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1ã"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="700" w:first-line="0"/></w:pPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="0"/></w:list><w:list w:ilfo="2"><w:ilst w:val="1"/></w:list></w:lists><w:styles><w:latentStyles w:defLockedState="off" w:latentStyleCount="260"><w:lsdException w:name="Normal"/><w:lsdException w:name="heading 1"/><w:lsdException w:name="heading 2"/><w:lsdException w:name="heading 3"/><w:lsdException w:name="heading 4"/><w:lsdException w:name="heading 5"/><w:lsdException w:name="heading 6"/><w:lsdException w:name="heading 7"/><w:lsdException w:name="heading 8"/><w:lsdException w:name="heading 9"/><w:lsdException w:name="index 1"/><w:lsdException w:name="index 2"/><w:lsdException w:name="index 3"/><w:lsdException w:name="index 4"/><w:lsdException w:name="index 5"/><w:lsdException w:name="index 6"/><w:lsdException w:name="index 7"/><w:lsdException w:name="index 8"/><w:lsdException w:name="index 9"/><w:lsdException w:name="toc 1"/><w:lsdException w:name="toc 2"/><w:lsdException w:name="toc 3"/><w:lsdException w:name="toc 4"/><w:lsdException w:name="toc 5"/><w:lsdException w:name="toc 6"/><w:lsdException w:name="toc 7"/><w:lsdException w:name="toc 8"/><w:lsdException w:name="toc 9"/><w:lsdException w:name="Normal Indent"/><w:lsdException w:name="footnote text"/><w:lsdException w:name="annotation text"/><w:lsdException w:name="header"/><w:lsdException w:name="footer"/><w:lsdException w:name="index heading"/><w:lsdException w:name="caption"/><w:lsdException w:name="table of figures"/><w:lsdException w:name="envelope address"/><w:lsdException w:name="envelope return"/><w:lsdException w:name="footnote reference"/><w:lsdException w:name="annotation reference"/><w:lsdException w:name="line number"/><w:lsdException w:name="page number"/><w:lsdException w:name="endnote reference"/><w:lsdException w:name="endnote text"/><w:lsdException w:name="table of authorities"/><w:lsdException w:name="macro"/><w:lsdException w:name="toa heading"/><w:lsdException w:name="List"/><w:lsdException w:name="List Bullet"/><w:lsdException w:name="List Number"/><w:lsdException w:name="List 2"/><w:lsdException w:name="List 3"/><w:lsdException w:name="List 4"/><w:lsdException w:name="List 5"/><w:lsdException w:name="List Bullet 2"/><w:lsdException w:name="List Bullet 3"/><w:lsdException w:name="List Bullet 4"/><w:lsdException w:name="List Bullet 5"/><w:lsdException w:name="List Number 2"/><w:lsdException w:name="List Number 3"/><w:lsdException w:name="List Number 4"/><w:lsdException w:name="List Number 5"/><w:lsdException w:name="Title"/><w:lsdException w:name="Closing"/><w:lsdException w:name="Signature"/><w:lsdException w:name="Default Paragraph Font"/><w:lsdException w:name="Body Text"/><w:lsdException w:name="Body Text Indent"/><w:lsdException w:name="List Continue"/><w:lsdException w:name="List Continue 2"/><w:lsdException w:name="List Continue 3"/><w:lsdException w:name="List Continue 4"/><w:lsdException w:name="List Continue 5"/><w:lsdException w:name="Message Header"/><w:lsdException w:name="Subtitle"/><w:lsdException w:name="Salutation"/><w:lsdException w:name="Date"/><w:lsdException w:name="Body Text First Indent"/><w:lsdException w:name="Body Text First Indent 2"/><w:lsdException w:name="Note Heading"/><w:lsdException w:name="Body Text 2"/><w:lsdException w:name="Body Text 3"/><w:lsdException w:name="Body Text Indent 2"/><w:lsdException w:name="Body Text Indent 3"/><w:lsdException w:name="Block Text"/><w:lsdException w:name="Hyperlink"/><w:lsdException w:name="FollowedHyperlink"/><w:lsdException w:name="Strong"/><w:lsdException w:name="Emphasis"/><w:lsdException w:name="Document Map"/><w:lsdException w:name="Plain Text"/><w:lsdException w:name="E-mail Signature"/><w:lsdException w:name="Normal (Web)"/><w:lsdException w:name="HTML Acronym"/><w:lsdException w:name="HTML Address"/><w:lsdException w:name="HTML Cite"/><w:lsdException w:name="HTML Code"/><w:lsdException w:name="HTML Definition"/><w:lsdException w:name="HTML Keyboard"/><w:lsdException w:name="HTML Preformatted"/><w:lsdException w:name="HTML Sample"/><w:lsdException w:name="HTML Typewriter"/><w:lsdException w:name="HTML Variable"/><w:lsdException w:name="Normal Table"/><w:lsdException w:name="annotation subject"/><w:lsdException w:name="Table Simple 1"/><w:lsdException w:name="Table Simple 2"/><w:lsdException w:name="Table Simple 3"/><w:lsdException w:name="Table Classic 1"/><w:lsdException w:name="Table Classic 2"/><w:lsdException w:name="Table Classic 3"/><w:lsdException w:name="Table Classic 4"/><w:lsdException w:name="Table Colorful 1"/><w:lsdException w:name="Table Colorful 2"/><w:lsdException w:name="Table Colorful 3"/><w:lsdException w:name="Table Columns 1"/><w:lsdException w:name="Table Columns 2"/><w:lsdException w:name="Table Columns 3"/><w:lsdException w:name="Table Columns 4"/><w:lsdException w:name="Table Columns 5"/><w:lsdException w:name="Table Grid 1"/><w:lsdException w:name="Table Grid 2"/><w:lsdException w:name="Table Grid 3"/><w:lsdException w:name="Table Grid 4"/><w:lsdException w:name="Table Grid 5"/><w:lsdException w:name="Table Grid 6"/><w:lsdException w:name="Table Grid 7"/><w:lsdException w:name="Table Grid 8"/><w:lsdException w:name="Table List 1"/><w:lsdException w:name="Table List 2"/><w:lsdException w:name="Table List 3"/><w:lsdException w:name="Table List 4"/><w:lsdException w:name="Table List 5"/><w:lsdException w:name="Table List 6"/><w:lsdException w:name="Table List 7"/><w:lsdException w:name="Table List 8"/><w:lsdException w:name="Table 3D effects 1"/><w:lsdException w:name="Table 3D effects 2"/><w:lsdException w:name="Table 3D effects 3"/><w:lsdException w:name="Table Contemporary"/><w:lsdException w:name="Table Elegant"/><w:lsdException w:name="Table Professional"/><w:lsdException w:name="Table Subtle 1"/><w:lsdException w:name="Table Subtle 2"/><w:lsdException w:name="Table Web 1"/><w:lsdException w:name="Table Web 2"/><w:lsdException w:name="Table Web 3"/><w:lsdException w:name="Balloon Text"/><w:lsdException w:name="Table Grid"/><w:lsdException w:name="Table Theme"/><w:lsdException w:name="Light Shading"/><w:lsdException w:name="Light List"/><w:lsdException w:name="Light Grid"/><w:lsdException w:name="Medium Shading 1"/><w:lsdException w:name="Medium Shading 2"/><w:lsdException w:name="Medium List 1"/><w:lsdException w:name="Medium List 2"/><w:lsdException w:name="Medium Grid 1"/><w:lsdException w:name="Medium Grid 2"/><w:lsdException w:name="Medium Grid 3"/><w:lsdException w:name="Dark List"/><w:lsdException w:name="Colorful Shading"/><w:lsdException w:name="Colorful List"/><w:lsdException w:name="Colorful Grid"/><w:lsdException w:name="Light Shading Accent 1"/><w:lsdException w:name="Light List Accent 1"/><w:lsdException w:name="Light Grid Accent 1"/><w:lsdException w:name="Medium Shading 1 Accent 1"/><w:lsdException w:name="Medium Shading 2 Accent 1"/><w:lsdException w:name="Medium List 1 Accent 1"/><w:lsdException w:name="Medium List 2 Accent 1"/><w:lsdException w:name="Medium Grid 1 Accent 1"/><w:lsdException w:name="Medium Grid 2 Accent 1"/><w:lsdException w:name="Medium Grid 3 Accent 1"/><w:lsdException w:name="Dark List Accent 1"/><w:lsdException w:name="Colorful Shading Accent 1"/><w:lsdException w:name="Colorful List Accent 1"/><w:lsdException w:name="Colorful Grid Accent 1"/><w:lsdException w:name="Light Shading Accent 2"/><w:lsdException w:name="Light List Accent 2"/><w:lsdException w:name="Light Grid Accent 2"/><w:lsdException w:name="Medium Shading 1 Accent 2"/><w:lsdException w:name="Medium Shading 2 Accent 2"/><w:lsdException w:name="Medium List 1 Accent 2"/><w:lsdException w:name="Medium List 2 Accent 2"/><w:lsdException w:name="Medium Grid 1 Accent 2"/><w:lsdException w:name="Medium Grid 2 Accent 2"/><w:lsdException w:name="Medium Grid 3 Accent 2"/><w:lsdException w:name="Dark List Accent 2"/><w:lsdException w:name="Colorful Shading Accent 2"/><w:lsdException w:name="Colorful List Accent 2"/><w:lsdException w:name="Colorful Grid Accent 2"/><w:lsdException w:name="Light Shading Accent 3"/><w:lsdException w:name="Light List Accent 3"/><w:lsdException w:name="Light Grid Accent 3"/><w:lsdException w:name="Medium Shading 1 Accent 3"/><w:lsdException w:name="Medium Shading 2 Accent 3"/><w:lsdException w:name="Medium List 1 Accent 3"/><w:lsdException w:name="Medium List 2 Accent 3"/><w:lsdException w:name="Medium Grid 1 Accent 3"/><w:lsdException w:name="Medium Grid 2 Accent 3"/><w:lsdException w:name="Medium Grid 3 Accent 3"/><w:lsdException w:name="Dark List Accent 3"/><w:lsdException w:name="Colorful Shading Accent 3"/><w:lsdException w:name="Colorful List Accent 3"/><w:lsdException w:name="Colorful Grid Accent 3"/><w:lsdException w:name="Light Shading Accent 4"/><w:lsdException w:name="Light List Accent 4"/><w:lsdException w:name="Light Grid Accent 4"/><w:lsdException w:name="Medium Shading 1 Accent 4"/><w:lsdException w:name="Medium Shading 2 Accent 4"/><w:lsdException w:name="Medium List 1 Accent 4"/><w:lsdException w:name="Medium List 2 Accent 4"/><w:lsdException w:name="Medium Grid 1 Accent 4"/><w:lsdException w:name="Medium Grid 2 Accent 4"/><w:lsdException w:name="Medium Grid 3 Accent 4"/><w:lsdException w:name="Dark List Accent 4"/><w:lsdException w:name="Colorful Shading Accent 4"/><w:lsdException w:name="Colorful List Accent 4"/><w:lsdException w:name="Colorful Grid Accent 4"/><w:lsdException w:name="Light Shading Accent 5"/><w:lsdException w:name="Light List Accent 5"/><w:lsdException w:name="Light Grid Accent 5"/><w:lsdException w:name="Medium Shading 1 Accent 5"/><w:lsdException w:name="Medium Shading 2 Accent 5"/><w:lsdException w:name="Medium List 1 Accent 5"/><w:lsdException w:name="Medium List 2 Accent 5"/><w:lsdException w:name="Medium Grid 1 Accent 5"/><w:lsdException w:name="Medium Grid 2 Accent 5"/><w:lsdException w:name="Medium Grid 3 Accent 5"/><w:lsdException w:name="Dark List Accent 5"/><w:lsdException w:name="Colorful Shading Accent 5"/><w:lsdException w:name="Colorful List Accent 5"/><w:lsdException w:name="Colorful Grid Accent 5"/><w:lsdException w:name="Light Shading Accent 6"/><w:lsdException w:name="Light List Accent 6"/><w:lsdException w:name="Light Grid Accent 6"/><w:lsdException w:name="Medium Shading 1 Accent 6"/><w:lsdException w:name="Medium Shading 2 Accent 6"/><w:lsdException w:name="Medium List 1 Accent 6"/><w:lsdException w:name="Medium List 2 Accent 6"/><w:lsdException w:name="Medium Grid 1 Accent 6"/><w:lsdException w:name="Medium Grid 2 Accent 6"/><w:lsdException w:name="Medium Grid 3 Accent 6"/><w:lsdException w:name="Dark List Accent 6"/><w:lsdException w:name="Colorful Shading Accent 6"/><w:lsdException w:name="Colorful List Accent 6"/><w:lsdException w:name="Colorful Grid Accent 6"/></w:latentStyles><w:style w:type="paragraph" w:styleId="a1" w:default="on"><w:name w:val="Normal"/><w:pPr><w:widowControl w:val="off"/><w:jc w:val="both"/></w:pPr><w:rPr><w:kern w:val="2"/><w:sz w:val="21"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="2"><w:name w:val="heading 1"/><w:basedOn w:val="a1"/><w:next w:val="a1"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before="340" w:before-lines="0" w:after="330" w:line="578" w:line-rule="auto"/><w:jc w:val="center"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:b/><w:b-cs/><w:spacing w:val="16"/><w:kern w:val="44"/><w:sz w:val="28"/><w:sz-cs w:val="44"/></w:rPr></w:style><w:style w:type="character" w:styleId="a6" w:default="on"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:styleId="a5" w:default="on"><w:name w:val="Normal Table"/><w:tblPr><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="paragraph" w:styleId="a3"><w:name w:val="footer"/><w:basedOn w:val="a1"/><w:pPr><w:tabs><w:tab w:val="center" w:pos="4153"/><w:tab w:val="right" w:pos="8306"/></w:tabs><w:snapToGrid w:val="off"/><w:jc w:val="left"/></w:pPr><w:rPr><w:sz w:val="18"/><w:sz-cs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="a4"><w:name w:val="header"/><w:basedOn w:val="a1"/><w:link w:val="a8"/><w:pPr><w:pBdr><w:bottom w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/></w:pBdr><w:tabs><w:tab w:val="center" w:pos="4153"/><w:tab w:val="right" w:pos="8306"/></w:tabs><w:snapToGrid w:val="off"/><w:jc w:val="center"/></w:pPr><w:rPr><w:sz w:val="18"/><w:sz-cs w:val="18"/></w:rPr></w:style><w:style w:type="character" w:styleId="a7"><w:name w:val="page number"/><w:basedOn w:val="a6"/><w:rPr/></w:style><w:style w:type="character" w:styleId="a8"><w:name w:val="页ç Char"/><w:link w:val="a4"/><w:rPr><w:kern w:val="2"/><w:sz w:val="18"/><w:sz-cs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="a9"><w:name w:val="æ®é (Web)"/><w:basedOn w:val="a1"/><w:pPr><w:widowControl/><w:spacing w:before="100" w:before-lines="0" w:before-autospacing="on" w:after="100" w:after-autospacing="on"/><w:jc w:val="left"/></w:pPr><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:hint="default"/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="24"/></w:rPr></w:style></w:styles><w:shapeDefaults><o:shapedefaults fill="t" stroke="t"><v:fill type="gradient" on="t" angle="90" focussize="0f,0f" focusposition="0f,0f"><o:fill type="gradientUnscaled" v:ext="backwardCompatible"/></v:fill><v:stroke weight="1.25pt" color="#739CC3"/></o:shapedefaults></w:shapeDefaults><w:bgPict><w:background/><v:background id="_x0000_s1025"><v:fill on="f" focussize="0,0"/></v:background></w:bgPict><w:docPr><w:view w:val="print"/><w:zoom w:percent="130"/><w:characterSpacingControl w:val="CompressPunctuation"/><w:documentProtection w:edit="comments" w:enforcement="off"/><w:doNotEmbedSystemFonts/><w:defaultTabStop w:val="420"/><w:drawingGridVerticalSpacing w:val="156"/><w:displayHorizontalDrawingGridEvery w:val="1"/><w:displayVerticalDrawingGridEvery w:val="1"/><w:compat><w:adjustLineHeightInTable/><w:ulTrailSpace/><w:doNotExpandShiftReturn/><w:balanceSingleByteDoubleByteWidth/><w:spaceForUL/><w:breakWrappedTables/><w:useFELayout/></w:compat></w:docPr><w:body><wx:sect><w:p><w:pPr><w:pStyle w:val="a9"/><w:tabs><w:tab w:val="center" w:pos="4153"/><w:tab w:val="right" w:pos="8306"/></w:tabs><w:spacing w:line="360" w:line-rule="auto"/><w:rPr><w:rFonts w:hint="fareast"/><w:spacing w:val="16"/></w:rPr></w:pPr><w:r><w:rPr><w:spacing w:val="16"/></w:rPr><w:tab/></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:tabs><w:tab w:val="center" w:pos="4153"/><w:tab w:val="right" w:pos="8306"/></w:tabs><w:spacing w:line="360" w:line-rule="auto"/><w:rPr><w:b/><w:spacing w:val="16"/></w:rPr></w:pPr><w:r><w:rPr><w:spacing w:val="16"/></w:rPr><w:tab/></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:spacing w:val="16"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:spacing w:val="16"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="48"/><w:sz-cs w:val="48"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="84"/><w:sz-cs w:val="84"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="84"/><w:sz-cs w:val="84"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="84"/><w:sz-cs w:val="84"/></w:rPr><w:t>å³ å¨ å å 书</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="84"/><w:sz-cs w:val="84"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:ind w:first-line="3000"/><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:ind w:first-line="3000"/><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr><w:t>  </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:ind w:first-line="1060" w:first-line-chars="300"/><w:rPr><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/><w:u w:val="single"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr><w:t>ç² æ¹ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å屝叿µ·å·å¼å¿é£åæé责任å
¬å¸</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:ind w:first-line="1060" w:first-line-chars="300"/><w:rPr><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/><w:u w:val="single"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr><w:t>ä¹ æ¹ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.staffName}</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:jc w:val="center"/><w:rPr><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr><w:t>ç¾è®¢æ¥æï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.qyear}</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.qmoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.qday}</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr><w:t>æ¥</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="360" w:line-rule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="32"/><w:sz-cs w:val="32"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:widowControl/><w:adjustRightInd w:val="off"/><w:snapToGrid w:val="off"/><w:spacing w:line="400" w:line-rule="exact"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="454545"/><w:kern w:val="0"/><w:sz w:val="32"/><w:sz-cs w:val="30"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="440" w:line-rule="exact"/><w:rPr><w:rFonts w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="454545"/><w:sz w:val="32"/><w:sz-cs w:val="30"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="560" w:line-rule="exact"/><w:ind w:first-line="624" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ ¹æ®ãä¸å人æ°å
±åå½å³å¨æ³ãããä¸å人æ°å
±åå½å³å¨ååæ³ãåæå
³æ³å¾ãæ³è§è§å®,ç²ä¹åæ¹éµå¾ªåæ³ãå
¬å¹³ã</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å¹³çèªæ¿ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ååä¸è´ãè¯å®ä¿¡ç¨ååç¾è®¢æ¬åå,å¹¶å
±åéµå®ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="2"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¸ãç²æ¹åºæ¬æ
åµ</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç¬¬ä¸æ¡ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç²æ¹ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="fareast"/><w:b/><w:b-cs w:val="off"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å屝叿µ·å·å¼å¿é£åæé责任å
¬å¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ³å®ä»£è¡¨äººï¼ä¸»è¦è´è´£äººï¼æå§æä»£ç人ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æé«</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:ind w:right="-475" w:first-line="2348" w:first-line-chars="750"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>äºã乿¹åºæ¬æ
åµ</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:ind w:right="-475"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç¬¬äºæ¡ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.staffName}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ§å«ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.sex}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´é¾ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.age}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:ind w:right="-475"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>身份</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>è¯</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å·ç ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.identityCard}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:ind w:right="5"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æ·ç±</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä½å:</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.nativePlace}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:ind w:right="5"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="default"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ç°ä½å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ï¼ </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.adress}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="480" w:line-rule="exact"/><w:ind w:right="5"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>èç³»çµè¯</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ï¼ </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.phone}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="2"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="2974" w:first-line-chars="950"/><w:jc w:val="both"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¸ãå³å¨ååæé</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="62" w:after="62" w:line="520" w:line-rule="exact"/><w:ind w:first-line="614" w:first-line-chars="196"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç¬¬ä¸æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç²ä¹åæ¹çº¦å®æä»¥ä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.dateSelect}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç§æ¹å¼ç¡®å®âå³å¨ååæéâï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="62" w:after="62" w:line="520" w:line-rule="exact"/><w:ind w:first-line="611" w:first-line-chars="196"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>Aã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æåºå®æéï¼èª</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.syear}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.smoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.sday}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥èµ·è³</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.eyear}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.emoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.eday}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥æ¢ãè¯ç¨æèª</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.styear}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.stmoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.stday}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥èµ·è³</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.seyear}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.semoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.seday}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥æ¢ã</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="62" w:after="62" w:line="520" w:line-rule="exact"/><w:ind w:first-line="611" w:first-line-chars="196"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>Bã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ åºå®æéï¼èª</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bsyear}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bsmoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bsday}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥èµ·</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>è³åæ¹è§£é¤å³å¨åå乿¥</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ãè¯ç¨æèª</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bstyear}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bstmoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bstday}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥èµ·è³</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bseyear}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bsemoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.bseday}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥æ¢ã </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="62" w:after="62" w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> Cã以宿ä¸å®å·¥ä½ä»»å¡ä¸ºæéï¼èª</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.csyear}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.csmoth}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> ${item.csday} </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥èµ·çæï¼è³å®æå·¥ä½ä»»å¡ä¹æ¥æ¢ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="2"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>åãå³å¨å
³ç³»å»ºç«æ¶é´ãå·¥ä½å
容åå·¥ä½å°ç¹</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="2"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="939" w:first-line-chars="300"/><w:jc w:val="both"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç¬¬åæ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b w:val="off"/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 乿¹ä»¥å®é
å°å²ä¹æ¥ä¸ºååèµ·å§æ¶é´å»ºç«å³å¨å
³ç³»ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="2"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="624" w:first-line-chars="200"/><w:jc w:val="both"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b w:val="off"/><w:b-cs w:val="off"/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç¬¬äºæ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs w:val="off"/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 乿¹å·¥ä½å°ç¹ä¸º</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs w:val="off"/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs w:val="off"/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å屯å¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>188å¢å¢é¨æµ·å·å¼å¿é£åæé责任å
¬å¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs w:val="off"/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>  </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>第å
æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t> 乿¹</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å²ä½ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> ${item.postJob} </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:first-line="630"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç¬¬ä¸æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¨ååæææå
ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹åæç²æ¹æ ¹æ®å
¬å¸ä¸å¡éè¦æè
å
¬å¸é坹乿¹çä¸ç»©èæ ¸ãå®æè½®å²ãç«èä¸å²çåå </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ï¼è°æ´ä¹æ¹çå·¥ä½å²ä½ãå·¥ä½å
容åå·¥ä½å°ç¹ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="center"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>äºã工使¶é´å伿¯ä¼å</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:first-line="645"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第å
«æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç²æ¹ä¾æ³å¶å®åå·¥</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>工使¶é¿</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ã伿¯å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>请</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¼åå¶åº¦;乿¹é¡»éµå®ç²æ¹ä¾æ³å¶å®çå·¥æ¶ã伿¯å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>请</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¼åå¶åº¦ï¼å¹¶æç
§è§å®ä¸ä¸çãä¼åæé´å·¥èµç¦å©å¾
éæç
§</w:t></w:r><aml:annotation aml:id="0" w:type="Word.Bookmark.Start" w:name="_Hlk130463128"/><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å
¬å¸ãåå·¥æåãç¸å
³è§å®æ§è¡</w:t></w:r><aml:annotation aml:id="0" w:type="Word.Bookmark.End"/><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ã </w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:first-line="645"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>ç¬¬ä¹æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t> 乿¹ä¾æ³äº«æçå©ä¸§åã女è工产</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æ¤</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>åçï¼æç
§ç²æ¹ä¾æ³å¶å®çç¸å
³è§ç« å¶åº¦æ§è¡ãå©ä¸§åå·¥èµã产</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æ¤</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>åå·¥èµä»¥</w:t></w:r><aml:annotation aml:id="1" w:type="Word.Bookmark.Start" w:name="_Hlk130463158"/><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å
¬å¸ãåå·¥æåãç¸å
³è§å®æ§è¡ã</w:t></w:r><aml:annotation aml:id="1" w:type="Word.Bookmark.End"/></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç¬¬åæ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç²æ¹å å·¥ä½éè¦å®æä¹æ¹å»¶é¿å·¥ä½æ¶é´æè忥å çï¼ä¹æ¹åºæä»ç²æ¹çç»ä¸å®æãå çå·¥èµæç
§å
¬å¸ãåå·¥æåãç¸å
³è§å®æ§è¡ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 第å䏿¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>éå¨</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å®é
å ççå½å¤©å°ç»è¿é¨é¨ç»çæ¹åçå çç³è¯·äº¤å°äººäºé¨ï¼å¦åä¸è®¡å çãï¼ç´§æ¥æ
åµé¤å¤ï¼</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="2"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å
ãå³å¨æ¥é
¬</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第åäºæ¡ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç²æ¹ç»åæ¬åä½çç产ç»è¥ç¹ç¹</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç»æµæçï¼ä¾æ³ç¡®å®æ¬åä½çå·¥èµåé
å¶åº¦ã乿¹çå·¥èµï¼æç
§æ¬åä½çå·¥èµåé
å¶åº¦ï¼ç»å乿¹çå³å¨æè½ãå³å¨å¼ºåº¦ãå³å¨</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æ¶é¿</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ãå³å¨è´¡ç®çç¡®å®ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:snapToGrid w:val="off"/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="562" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第å䏿¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 乿¹å¨æ³å®å·¥ä½æ¶é´æä¾æ³ç¾è®¢å³å¨åå约å®ç工使¶é´å
æä¾äºæ£å¸¸å³å¨ï¼ç²æ¹å乿¹æ¯ä»çå·¥èµä¸å¾ä½äºå½å°æä½å·¥èµæ åã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:snapToGrid w:val="off"/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>ä¸ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:u w:val="single"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>èªç¾è®¢ååæ¥èµ·</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æ¯ä¸ª</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:u w:val="single"/></w:rPr><w:t>次æç10-15å· </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>为åèªæ¥</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:snapToGrid w:val="off"/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="420"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ï¼äºï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>乿¹å¨è¯ç¨æå
çå·¥èµ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>为ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> ${item.proSalary} </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:snapToGrid w:val="off"/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:left="1248" w:hanging="1248" w:hanging-chars="400"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ï¼ä¸ï¼ç»ç²ä¹åæ¹ååä¸è´ï¼å¯¹ä¹æ¹çå·¥èµæ¥é
¬éæ©ä»¥</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.salarySelect}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡æ¬¾ç¡®å®ï¼</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:snapToGrid w:val="off"/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> Aã乿¹çå·¥èµæ¥é
¬æç
§ç²æ¹ä¾æ³å¶å®çè§ç« å¶åº¦ä¸çå
é¨å·¥èµåé
åæ³ç¡®å®ï¼æ ¹æ®ä¹æ¹çå·¥ä½å²ä½ç¡®å®å
¶æ¯æå·¥èµ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:snapToGrid w:val="off"/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t> Bãç²æ¹å¯¹ä¹æ¹å®è¡åºæ¬å·¥èµå绩æå·¥èµç¸ç»åçå
é¨å·¥èµåé
åæ³ï¼ä¹æ¹çæ¶å
¥å
æ¬åºæ¬å·¥èµã误é¤ã交éãçæ´»ä½å®¿çå项补å©ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>妿åå¨</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>æ ¹æ®å
é¨å·¥èµåé
åæ³è°æ´å
¶å·¥èµï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>绩æå·¥èµæ ¹æ®ä¹æ¹çå·¥ä½ä¸ç»©ãå³å¨ææåå®é
è´¡ç®æç
§å
é¨åé
åæ³èæ ¸ç¡®å®ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:snapToGrid w:val="off"/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="640" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="default"/><w:sz w:val="32"/><w:sz-cs w:val="32"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>Cãç²æ¹å®è¡è®¡ä»¶å·¥èµå¶ï¼ä»¥ç²æ¹æ¥å°è®¢ååå
¬å¸ç产计åï¼æç
§å®é¢å计件åä»·ï¼æ ¹æ®ä¹æ¹å®æçä¸ç»©ï¼ææ¶è¶³é¢æ¯ä»ä¹æ¹çå·¥èµæ¥é
¬ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ã </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 第ååæ¡ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹é¤åºæ¬å·¥èµä»¥å¤ï¼ä¸ç»©èæ ¸å¥éãå
¨å¤å¥éã年度å¥éæ ¹æ®ç²æ¹çç»è¥æçã乿¹çå·¥ä½è¡¨ç°ï¼æåç±ç²æ¹èæ ¸ç¡®å®ç级åäºä»¥åæ¾ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:first-line="840" w:first-line-chars="300"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹å¦æå¯¹ç²æ¹åæ¾çå·¥èµåå¥é表示å¼è®®ï¼ååºå¨å·¥èµç»æ¸
乿¥</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>10æ¥å
åç²æ¹æåº</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>书é¢</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>å¼è®®</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ï¼è¶
è¿æ¶é´åè§ä¸ºæ å¼è®®ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:first-line="703" w:first-line-chars="250"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>äº</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>乿¹æ£ç
æå éå å·¥è´ä¼¤æé´ççå·¥èµå¾
éæç
§å½å®¶æ³å¾æ³è§åå½å°æå
³è§å®æ§è¡ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="2"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¸ã社ä¼ä¿é©åå
¶ä»ä¿é©ç¦å©å¾
é</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="626" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å
</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç²ä¹åæ¹ä¾æ³åå 社ä¼ä¿é©ï¼ææ¶ç¼´çº³èå·¥å
»èä¿é©ï¼ä¹æ¹ä¸ºå¢åºèå·¥ï¼å¢åºå·²ç»ä¸ºå
¶ç¼´çº³åç±»å
»èä¿é©çé¤å¤ãå
¶ä¸ä¾æ³åºå½ç±ä¹æ¹ç¼´çº³çé¨åï¼ç±ç²æ¹ä»ä¹æ¹å·¥èµæ¥é
¬ä¸ä»£æ£ä»£ç¼´ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ã </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹æ£ç
æéå å·¥è´ä¼¤ï¼å
¶ç
åå·¥èµåå»çå¾
éçæç
§ç²æ¹ä¾æ³å¶å®çç¸å
³å¶åº¦æ§è¡ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å
«</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>乿¹æ£èä¸ç
æå å·¥è´ä¼¤çå¾
éï¼æå½å®¶å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>èªæ²»åº</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="333333"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>æå
³è§å®æ§è¡ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="626" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>åä¹</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç²æ¹ä¸ºä¹æ¹æä¾å¦ä¸ç¦å©å¾
éï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>${item.remark}</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:jc w:val="center"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å
«</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å³å¨ä¿æ¤ãå³å¨æ¡ä»¶åèä¸å±å®³é²æ¤</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="614" w:first-line-chars="196"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>第äºåæ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç²æ¹æç
§å½å®¶åèªæ²»åºæå
³å³å¨ä¿æ¤è§å®æä¾ç¬¦åå½å®¶å³å¨å«çæ åçå³å¨ä½ä¸åºæï¼åå®ä¿æ¤ä¹æ¹å¨ç产工ä½ä¸çå®å
¨åå¥åº·ãå¦ä¹æ¹å·¥ä½è¿ç¨ä¸å¯è½äº§çèä¸ç
å±å®³ï¼ç²æ¹åºå¦å®åç¥ä¹æ¹ï¼å¹¶æãèä¸ç
鲿²»æ³ãçè§å®ä¿æ¤ä¹æ¹çå¥åº·åå
¶ç¸å
³æçã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="626" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>第äºå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:highlight w:val="none"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç²æ¹åºæå½å®¶æå
³é¨é¨è§å®ï¼æ ¹æ®ä¹æ¹ä»äºçå·¥ä½å²ä½ï¼åç»ä¹æ¹å¿
è¦çå³ä¿ç¨åã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="626" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第äºå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>äº</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç²æ¹æç
§å½å®¶åèªæ²»åºçæå
³è§å®ï¼å好èå·¥çå³å¨ä¿æ¤åä¿å¥å·¥ä½ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="560" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:jc w:val="center"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:color w:val="000000"/><w:spacing w:val="16"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¹ãç«ä¸ä¿å¯éå¶åå¹è®æå¡çº¦å®ï¼æ æ¤æ
å½¢çï¼åæ¹ä¸åæ¤æ¡æ¬¾çº¦æï¼</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="540"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第äºå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç²ä¹åæ¹ååä¸è´ï¼çº¦å®ä»¥ä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> A </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡æ¬¾ï¼</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:listPr><w:ilvl w:val="0"/><w:ilfo w:val="1"/></w:listPr><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="540"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹å·¥ä½æ¶åç²æ¹åä¸ç§å¯åä¸ç¥è¯äº§æç¸å
³çä¿å¯äºé¡¹çï¼ç²æ¹å¯ä»¥äºåä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>乿¹</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>便³åå约å®ä¿å®åä¸ç§å¯</w:t></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:listPr><w:ilvl w:val="0"/><w:ilfo w:val="1"/></w:listPr><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="540"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç±ç²æ¹åºèµå¯¹ä¹æ¹è¿è¡ä¸ä¸ææ¯å¹è®ï¼å¹¶è¦æ±ä¹æ¹å±¥è¡æå¡æçï¼åºå½äºåå¾å¾ä¹æ¹åæï¼å¹¶ç¾è®¢åè®®ï¼æç¡®åæ¹æå©ä¹å¡ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="2"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>åãå³å¨ååçè§£é¤ãç»æ¢åç»æµè¡¥å¿</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:first-line="703" w:first-line-chars="250"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第äºå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹æä¸åæ
å½¢ä¹ä¸çï¼ç²æ¹å¯ç«å³è§£é¤æ¬å³å¨ååï¼</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:listPr><w:ilvl w:val="0"/><w:ilfo w:val="2"/></w:listPr><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:left="700" w:first-line="0" w:first-line-chars="0"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹å¨è¯ç¨æé´ï¼ç»ä¸ç»©èæ ¸è¯å®¡ä¸ºä¸åæ ¼çï¼</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:listPr><w:ilvl w:val="0"/><w:ilfo w:val="2"/></w:listPr><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:left="700" w:first-line="0" w:first-line-chars="0"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹è¢«æ¥å®å¨åºèæ¶åç²æ¹æä¾</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>èå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¸ªäººèµæï¼å
æ¬ä½ä¸éäºï¼ç¦»èè¯æãèº«ä»½è¯æãæ·ç±è¯æãå¦åè¯æã使£è¯æãå·¥ä½ç»åãå®¶åºæåå主è¦ç¤¾ä¼å
³ç³»çèµæ;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  3ã严éè¿åæ¬</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>åä½</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>çå项è§ç« å¶åº¦ï¼å
·ä½æ
å½¢å¨ãåå·¥æåãå·²åæï¼;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 4ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr><w:t>严é失èï¼è¥ç§èå¼ï¼ç»</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æ¬</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr><w:t>åä½é æé大æå®³çï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å
·ä½æ
å½¢å¨ãåå·¥æåãå·²åæ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr><w:t>ï¼</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr><w:t> 5ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æ¯ææ æ
</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr><w:t>请å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>è¶
è¿</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr><w:t>3次以ä¸ï¼å«3次ï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ç</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr><w:t>ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:color w:val="000000"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第äºå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>äº</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æä¸åæ
å½¢ä¹ä¸ï¼æ¬ååèªè¡ç»æ¢ï¼</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  1</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ååææ»¡ä¸åæ¹ä¸è½å°±å³å¨ååç»ç¾è¾¾æä¸è´ç;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  2</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç²æ¹ç»è¥çç¶åµä¸ä½³</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>éè£å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æå·²ç ´äº§å
³é;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  3</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹åºå¾å
¥ä¼æè
å±¥è¡å½å®¶è§å®çå
¶ä»æ³å®</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å
¬æ°</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¹å¡ç;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  4</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ³å¾æ³è§è§å®çå
¶ä»æ
å½¢ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 第äºå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å
</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¬ååææ»¡åï¼ç²ä¹åæ¹åºæç
§æå
³è§å®å°±ååç»è®¢æè
ç»æ¢äºå®</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æåº</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>èªå·±çæè§ï¼å¹¶åçç¸å
³ä¹¦é¢æç»ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第äºå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹æªæå30天åç²æ¹æåºè¾è</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>æ¥å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ææ
èªç¦»èçï¼</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å¹¶</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç±æ¤ç»ç²æ¹é æç»æµæå¤±çï¼ä¹æ¹åºæ¿æ
ç¸åºçèµå¿è´£ä»»ã</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="562" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第äºå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å
«</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 乿¹åºå½</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å¨</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ååç»æ¢ä¹æ¥</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>3æ¥å
ï¼åçå·¥ä½äº¤æ¥ãåºå½æ¯ä»ç»æµè¡¥å¿çï¼å¨åç»å·¥ä½äº¤æ¥æ¶æ¯ä»ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:tabs><w:tab w:val="left" w:pos="559"/></w:tabs><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="626" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="auto"/><w:spacing w:val="16"/><w:kern w:val="44"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:tab/></w:r><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="auto"/><w:spacing w:val="16"/><w:kern w:val="44"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:b-cs/><w:color w:val="auto"/><w:spacing w:val="16"/><w:kern w:val="44"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>åä¸ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç»æµè¿½å¿</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:ind w:first-line="626" w:first-line-chars="200"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>äºåä¹</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¹æä¸åæ
å½¢ä¹ä¸çï¼ç²æ¹ä»¥ç»©æèæ ¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ä¸ºä¾æ®</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ææå乿¹è¿½å¿ï¼</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  ãã1</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ä¾ç
§æ³å¾æ³è§çº¦å®ååå约å®ä¹æ¹åºæ¿æ
çèµå¿è´£ä»»;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  ãã2</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:fareast="ZH-CN"/></w:rPr><w:t>ã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>è¿åç²æ¹ä¾æ³å¶è®¢çè§ç« å¶åº¦å¹¶é æç»æµæå¤±;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  ãã3ãå·¥ä½å¤±è¯¯ç»ç²æ¹é æäºç»æµæå¤±;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>  ãã4ãåºåç²æ¹æ¯ä»çå
¶å®æ¬¾é¡¹;</w:t></w:r></w:p><w:p><w:pPr><w:pageBreakBefore w:val="off"/><w:widowControl/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:before="100" w:before-autospacing="on" w:after="180" w:line="520" w:line-rule="exact"/><w:jc w:val="left"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b-cs/><w:color w:val="000000"/><w:kern w:val="0"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="470" w:first-line-chars="150"/><w:jc w:val="center"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>åäºãå³å¨äºè®®å¤çåå
¶å®</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:adjustRightInd w:val="off"/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 第ä¸åæ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> ç²ä¹åæ¹å å±¥è¡æ¬åååçäºè®®ï¼ä¹æ¹å¯ä»¥åç²æ¹å³å¨äºè®®è°è§£å§åä¼ç³è¯·è°è§£ï¼è°è§£ä¸æçï¼å¯ä»¥åå½å°å³å¨äºè®®ä»²è£å§åä¼ç³è¯·ä»²è£ã对仲è£è£å³ä¸æçï¼å¯ä»¥èªæ¶å°ä»²è£è£å³ä¹¦åä¾åå½å°äººæ°æ³é¢æèµ·è¯è®¼ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:jc w:val="both"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 第ä¸å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡ æ¬ååçéä»¶å¦ä¸ï¼</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t>1ï¼ãåå·¥æåã</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>䏿¬</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:u w:val="single"/></w:rPr><w:t> </w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:ind w:first-line="626" w:first-line-chars="200"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>第ä¸å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>äº</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 乿¹èªæ¬ååç¾å乿¥ç¾æ¶ãåå·¥æåãï¼å¹¶å·²ç¥æãåå·¥æåãå
¨é¨å
容ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:pageBreakBefore w:val="off"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="off"/><w:autoSpaceDE/><w:autoSpaceDN/><w:spacing w:line="520" w:line-rule="exact"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 第ä¸å</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>ä¸</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:b/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¡</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> æ¬</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>åå</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>èªç²ä¹åæ¹ç¾</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>订</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>乿¥èµ·çæãæ¬ååä¸å¼ä¸¤ä»½ï¼ç²ä¹åæ¹åæ§ä¸ä»½ã</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="440" w:line-rule="exact"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="440" w:line-rule="exact"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="440" w:line-rule="exact"/><w:ind w:first-line="511" w:first-line-chars="164"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:spacing w:line="440" w:line-rule="exact"/><w:ind w:first-line="624" w:first-line-chars="200"/><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>ç²æ¹ï¼ï¼å
¬ ç« ï¼ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> 乿¹ï¼</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a9"/><w:wordWrap w:val="off"/><w:spacing w:line="440" w:line-rule="exact"/><w:ind w:right="1440" w:first-line="400"/><w:jc w:val="center"/><w:rPr><w:rFonts w:ascii="仿å®" w:h-ansi="仿å®" w:fareast="仿å®" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> æ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥ </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>å¹´</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> æ</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t> </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii="å®ä½" w:h-ansi="å®ä½" w:fareast="å®ä½" w:cs="å®ä½" w:hint="fareast"/><w:spacing w:val="16"/><w:sz w:val="28"/><w:sz-cs w:val="28"/></w:rPr><w:t>æ¥</w:t></w:r></w:p><w:sectPr><w:ftr w:type="even"><w:p><w:pPr><w:pStyle w:val="a3"/><w:framePr w:wrap="around" w:hanchor="margin" w:vanchor="text" w:x-align="center" w:y="0"/><w:rPr><w:rStyle w:val="a7"/></w:rPr></w:pPr><w:r><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:rPr><w:rStyle w:val="a7"/></w:rPr><w:instrText>PAGE </w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a3"/></w:pPr></w:p></w:ftr><w:ftr w:type="odd"><w:p><w:pPr><w:pStyle w:val="a3"/><w:framePr w:wrap="around" w:hanchor="margin" w:vanchor="text" w:x-align="center" w:y="0"/><w:rPr><w:rStyle w:val="a7"/></w:rPr></w:pPr><w:r><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:rPr><w:rStyle w:val="a7"/></w:rPr><w:instrText>PAGE </w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:rPr><w:rStyle w:val="a7"/><w:lang/></w:rPr><w:t>2</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val="a3"/></w:pPr></w:p></w:ftr><w:pgSz w:w="10319" w:h="14572"/><w:pgMar w:top="720" w:right="720" w:bottom="720" w:left="720" w:header="851" w:footer="992" w:gutter="0"/><w:cols w:space="720"/><w:titlePg/><w:docGrid w:type="lines" w:line-pitch="312"/></w:sectPr></wx:sect></w:body></w:wordDocument> |