浏览代码

first commit

HUJIANGUO 3 年之前
当前提交
f181d178d2
共有 42 个文件被更改,包括 5970 次插入0 次删除
  1. 8 0
      .gitignore
  2. 152 0
      pom.xml
  3. 26 0
      src/main/java/com/steerinfo/DilApplicationMain.java
  4. 22 0
      src/main/java/com/steerinfo/dil/config/CorsConfig1.java
  5. 43 0
      src/main/java/com/steerinfo/dil/config/WebSocketConfig.java
  6. 102 0
      src/main/java/com/steerinfo/dil/controller/BmsshipDetailsOrderController.java
  7. 78 0
      src/main/java/com/steerinfo/dil/controller/BmsshipDetailsStatementController.java
  8. 310 0
      src/main/java/com/steerinfo/dil/controller/BmsshipStatementController.java
  9. 58 0
      src/main/java/com/steerinfo/dil/controller/BmstruckFormulaController.java
  10. 19 0
      src/main/java/com/steerinfo/dil/feign/ColumnDataFeign.java
  11. 26 0
      src/main/java/com/steerinfo/dil/interceptors/MyLocaleChangeInterceptor.java
  12. 60 0
      src/main/java/com/steerinfo/dil/mapper/BmsshipDetailsOrderMapper.java
  13. 25 0
      src/main/java/com/steerinfo/dil/mapper/BmsshipDetailsStatementMapper.java
  14. 82 0
      src/main/java/com/steerinfo/dil/mapper/BmsshipStatementMapper.java
  15. 95 0
      src/main/java/com/steerinfo/dil/mapper/BmstruckFormulaMapper.java
  16. 228 0
      src/main/java/com/steerinfo/dil/model/BmsshipDetailsOrder.java
  17. 153 0
      src/main/java/com/steerinfo/dil/model/BmsshipDetailsStatement.java
  18. 198 0
      src/main/java/com/steerinfo/dil/model/BmsshipStatement.java
  19. 213 0
      src/main/java/com/steerinfo/dil/model/BmstruckFormula.java
  20. 57 0
      src/main/java/com/steerinfo/dil/service/IBmsshipDetailsOrderService.java
  21. 28 0
      src/main/java/com/steerinfo/dil/service/IBmsshipDetailsStatementService.java
  22. 85 0
      src/main/java/com/steerinfo/dil/service/IBmsshipStatementService.java
  23. 129 0
      src/main/java/com/steerinfo/dil/service/IBmstruckFormulaService.java
  24. 124 0
      src/main/java/com/steerinfo/dil/service/impl/BmsshipDetailsOrderSerivceImpl.java
  25. 43 0
      src/main/java/com/steerinfo/dil/service/impl/BmsshipDetailsStatementServiceImpl.java
  26. 240 0
      src/main/java/com/steerinfo/dil/service/impl/BmsshipStatementServiceImpl.java
  27. 532 0
      src/main/java/com/steerinfo/dil/service/impl/BmstruckFormulaServiceImpl.java
  28. 70 0
      src/main/java/com/steerinfo/dil/util/BaseRESTfulController.java
  29. 38 0
      src/main/java/com/steerinfo/dil/util/ColumnDataUtil.java
  30. 43 0
      src/main/java/com/steerinfo/dil/util/NoUtil.java
  31. 33 0
      src/main/java/com/steerinfo/dil/util/PageListAdd.java
  32. 11 0
      src/main/java/com/steerinfo/dil/util/util.java
  33. 9 0
      src/main/resources/application-dev.yml
  34. 8 0
      src/main/resources/application-prod.yml
  35. 0 0
      src/main/resources/application.yml
  36. 50 0
      src/main/resources/bootstrap.yml
  37. 654 0
      src/main/resources/com/steerinfo/dil/mapper/BmsshipDetailsOrderMapper.xml
  38. 296 0
      src/main/resources/com/steerinfo/dil/mapper/BmsshipDetailsStatementMapper.xml
  39. 987 0
      src/main/resources/com/steerinfo/dil/mapper/BmsshipStatementMapper.xml
  40. 551 0
      src/main/resources/com/steerinfo/dil/mapper/BmstruckFormulaMapper.xml
  41. 80 0
      src/main/resources/log4j.properties
  42. 4 0
      src/main/resources/message.properties

+ 8 - 0
.gitignore

@@ -0,0 +1,8 @@
+target/
+*.iml
+.idea/
+rebel.xml
+.rebel.xml.bak
+out/artifacts/
+dil-api.iml
+src/test

+ 152 - 0
pom.xml

@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>dil-api</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.0.7.RELEASE</version>
+    </parent>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <!--Spring Cloud的版本-->
+                <version>Finchley.SR2</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <repositories>
+        <repository>
+            <id>maven-public</id>
+            <name>steerinfo maven-public</name>
+            <url>https://nexus.steerinfo.com/repository/maven-public/</url>
+        </repository>
+    </repositories>
+
+    <distributionManagement>
+        <repository>
+            <id>maven-releases</id>
+            <name>steerinfo nexus-releases</name>
+            <url>http://nexus.steerinfo.com/repository/maven-releases/</url>
+        </repository>
+        <snapshotRepository>
+            <id>maven-snapshots</id>
+            <url>http://nexus.steerinfo.com/repository/maven-snapshots/</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+    <dependencies>
+        <!--websocket-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!--mybatisPlus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+
+        <!--swagger-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.17</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.17</version>
+        </dependency>
+        <!--steerinfo-->
+        <dependency>
+            <groupId>com.steerinfo</groupId>
+            <artifactId>framework</artifactId>
+            <version>1.0</version>
+        </dependency>
+
+
+    </dependencies>
+    <build>
+        <plugins>
+            <!--             自动生成代码文件 -->
+            <plugin>
+                <groupId>com.steerinfo</groupId>
+                <artifactId>generator-maven-plugin</artifactId>
+                <version>3.0</version>
+                <configuration>
+                    <connUrl>jdbc:oracle:thin:@192.168.1.51:1521:steerinfo</connUrl>
+                    <user>DIL0901</user>
+                    <password>st#0901</password>
+                    <!--包名-->
+                    <targetPackage>com.steerinfo.dil</targetPackage>
+                    <tables>
+                        <param>BMSSHIP_STATEMENT</param><!--运力-->
+                    </tables>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>steerinfo</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+    </build>
+</project>

+ 26 - 0
src/main/java/com/steerinfo/DilApplicationMain.java

@@ -0,0 +1,26 @@
+package com.steerinfo;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/4/21 14:32
+ * @Version 1.0
+ */
+@SpringBootApplication
+@ServletComponentScan
+@EnableScheduling
+@MapperScan({"com.steerinfo.dil.mapper"})
+@EnableFeignClients(basePackages = "com.steerinfo.dil.feign")
+@EnableDiscoveryClient
+public class DilApplicationMain {
+    public static void main(String[] args) {
+        SpringApplication.run(DilApplicationMain.class,args);
+    }
+}

+ 22 - 0
src/main/java/com/steerinfo/dil/config/CorsConfig1.java

@@ -0,0 +1,22 @@
+package com.steerinfo.dil.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ *
+ */
+@Configuration
+public class CorsConfig1 implements WebMvcConfigurer {
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOrigins("*")
+                .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
+                .allowCredentials(true)
+                .maxAge(3600)
+                .allowedHeaders("*");
+    }
+}

+ 43 - 0
src/main/java/com/steerinfo/dil/config/WebSocketConfig.java

@@ -0,0 +1,43 @@
+package com.steerinfo.dil.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.messaging.simp.config.ChannelRegistration;
+import org.springframework.messaging.simp.config.MessageBrokerRegistry;
+import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
+import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
+import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
+
+@Configuration
+@EnableWebSocketMessageBroker
+public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
+
+    @Override
+    public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
+        stompEndpointRegistry
+                .addEndpoint("/webSocket")
+                .setAllowedOrigins("*")
+                .withSockJS(); //使用sockJS
+
+    }
+
+    @Override
+    public void configureMessageBroker(MessageBrokerRegistry registry) {
+        //这里使用的是内存模式,生产环境可以使用rabbitmq或者其他mq。
+        //这里注册两个,主要是目的是将广播和队列分开。
+        //registry.enableStompBrokerRelay().setRelayHost().setRelayPort() 其他方式
+        registry.enableSimpleBroker("/topic");
+        //设置客户端前缀 即@MessageMapping
+        registry.setApplicationDestinationPrefixes("/app");
+        //点对点发送前缀
+        registry.setUserDestinationPrefix("/user");
+    }
+
+    /**
+     * 输入通道参数配置
+     *
+     * @param registration
+     */
+    @Override
+    public void configureClientInboundChannel(ChannelRegistration registration) {
+    }
+}

+ 102 - 0
src/main/java/com/steerinfo/dil/controller/BmsshipDetailsOrderController.java

@@ -0,0 +1,102 @@
+package com.steerinfo.dil.controller;
+
+import com.steerinfo.dil.service.impl.BmsshipDetailsOrderSerivceImpl;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.ColumnDataUtil;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/6 17:34
+ * @Version:V2.0
+ */
+@RestController
+@RequestMapping("/${api.version}/bmsshipdetailsorder")
+public class BmsshipDetailsOrderController extends BaseRESTfulController {
+
+    @Autowired
+    BmsshipDetailsOrderSerivceImpl bmsshipDetailsOrderSerivce;
+    @Autowired
+    ColumnDataUtil columnDataUtil;
+
+    /**
+     * 展示详单信息
+     * @param mapValue
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiModelProperty(value = "展示详单信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "93", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getDetailsOrderList")
+    public RESTfulResult getDetailsOrderList(@RequestBody(required = false) Map<String,Object> mapValue,
+                                          Integer pageNum,
+                                          Integer pageSize,
+                                          Integer apiId) {
+        List<Map<String, Object>> list = bmsshipDetailsOrderSerivce.getDetailsOrderList(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipDetailsOrderSerivce.getDetailsOrderList(mapValue);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 展示未生成账单的详单信息
+     * @param mapValue
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiModelProperty(value = "展示未生成账单的详单信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "93", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getUncomplateDetailsOrderList")
+    public RESTfulResult getUncomplateDetailsOrderList(@RequestBody(required = false) Map<String,Object> mapValue,
+                                             Integer pageNum,
+                                             Integer pageSize,
+                                             Integer apiId) {
+        List<Map<String, Object>> list = bmsshipDetailsOrderSerivce.getUncomplateDetailsOrderList(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipDetailsOrderSerivce.getUncomplateDetailsOrderList(mapValue);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 新增详单
+     * @param resultId
+     * @return
+     */
+    @ApiModelProperty(value = "新增详单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "resultId", value = "出厂实绩id", required = false, dataType = "BigDecimal"),
+    })
+    @PostMapping("/addDetailsOrder/{resultId}")
+    public RESTfulResult addDetailsOrder(@PathVariable("resultId") BigDecimal resultId) throws Exception {
+        int code = bmsshipDetailsOrderSerivce.insertSelective(resultId);
+        return success(code);
+    }
+}

+ 78 - 0
src/main/java/com/steerinfo/dil/controller/BmsshipDetailsStatementController.java

@@ -0,0 +1,78 @@
+package com.steerinfo.dil.controller;
+
+import com.steerinfo.dil.service.impl.BmsshipDetailsOrderSerivceImpl;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.ColumnDataUtil;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/6 17:34
+ * @Version:V2.0
+ */
+@RestController
+@RequestMapping("/${api.version}/bmsshipdetailsstatement")
+public class BmsshipDetailsStatementController extends BaseRESTfulController {
+
+    @Autowired
+    BmsshipDetailsOrderSerivceImpl bmsshipDetailsOrderSerivce;
+    @Autowired
+    ColumnDataUtil columnDataUtil;
+
+    /**
+     * 展示详单信息
+     * @param mapValue
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiModelProperty(value = "展示详单信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "93", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getDetailsOrderList")
+    public RESTfulResult getDetailsOrderList(@RequestBody(required = false) Map<String,Object> mapValue,
+                                          Integer pageNum,
+                                          Integer pageSize,
+                                          Integer apiId) {
+        List<Map<String, Object>> list = bmsshipDetailsOrderSerivce.getDetailsOrderList(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipDetailsOrderSerivce.getDetailsOrderList(mapValue);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 新增详单
+     * @param resultId
+     * @return
+     */
+    @ApiModelProperty(value = "新增详单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "resultId", value = "出厂实绩id", required = false, dataType = "BigDecimal"),
+    })
+    @PostMapping("/addDetailsOrder")
+    public RESTfulResult addDetailsOrder(@RequestBody BigDecimal resultId) throws Exception {
+        int code = bmsshipDetailsOrderSerivce.insertSelective(resultId);
+        return success(code);
+    }
+}

+ 310 - 0
src/main/java/com/steerinfo/dil/controller/BmsshipStatementController.java

@@ -0,0 +1,310 @@
+package com.steerinfo.dil.controller;
+
+import com.steerinfo.dil.service.impl.BmsshipStatementServiceImpl;
+import com.steerinfo.dil.service.impl.BmstruckFormulaServiceImpl;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.ColumnDataUtil;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/6 17:34
+ * @Version:V2.0
+ */
+@RestController
+@RequestMapping("/${api.version}/bmsshipstatement")
+public class BmsshipStatementController extends BaseRESTfulController {
+
+    @Autowired
+    BmsshipStatementServiceImpl bmsshipStatementService;
+    @Autowired
+    BmstruckFormulaServiceImpl bmstruckFormulaService;
+    @Autowired
+    ColumnDataUtil columnDataUtil;
+
+    /**
+     * 展示水运费和水分质检费账单信息
+     * @param mapValue
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiModelProperty(value = "展示水运费和水分质检费账单信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "101", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getStatementList")
+    public RESTfulResult getStatementList(@RequestBody(required = false) Map<String,Object> mapValue,
+                                          Integer pageNum,
+                                          Integer pageSize,
+                                          Integer apiId) {
+        List<Map<String, Object>> list = bmsshipStatementService.getStatementList(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipStatementService.getStatementList(mapValue);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 展示途损费账单信息
+     * @param mapValue
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiModelProperty(value = "展示途损费账单信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "101", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getLossStatementList")
+    public RESTfulResult getLossStatementList(@RequestBody(required = false) Map<String,Object> mapValue,
+                                          Integer pageNum,
+                                          Integer pageSize,
+                                          Integer apiId) {
+        List<Map<String, Object>> list = bmsshipStatementService.getLossStatementList(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipStatementService.getLossStatementList(mapValue);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 展示水分质检实绩
+     * @param mapValue
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiModelProperty(value = "展示水分质检实绩")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "114", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getWaterResult")
+    public RESTfulResult getWaterResult(@RequestBody(required = false) Map<String,Object> mapValue,
+                                          Integer pageNum,
+                                          Integer pageSize,
+                                          Integer apiId) {
+        List<Map<String, Object>> list = bmsshipStatementService.getWaterResult(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipStatementService.getWaterResult(mapValue);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 展示批次信息
+     * @param mapValue
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiModelProperty(value = "展示批次信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "115", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getBatch")
+    public RESTfulResult getBatch(@RequestBody(required = false) Map<String,Object> mapValue,
+                                        Integer pageNum,
+                                        Integer pageSize,
+                                        Integer apiId) {
+        List<Map<String, Object>> list = bmsshipStatementService.getBatch(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipStatementService.getBatch(mapValue);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 生成水运费账单
+     * @param mapList
+     * @return
+     * @throws Exception
+     */
+    @ApiModelProperty(value = "生成水运费账单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mapList", value = "详单列表", required = false, dataType = "java.util.List"),
+    })
+    @PostMapping("/addStatement")
+    public RESTfulResult addStatement(@RequestBody List<Map<String,Object>> mapList) throws Exception {
+        int code1 = bmsshipStatementService.insertSelective(mapList);
+        return success(code1);
+    }
+
+    /**
+     * 生成水分质检账单
+     * @param mapList
+     * @return
+     * @throws Exception
+     */
+    @ApiModelProperty(value = "生成水分质检账单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mapList", value = "水分质检实绩列表", required = false, dataType = "java.util.List"),
+    })
+    @PostMapping("/addWaterStatement")
+    public RESTfulResult addWaterStatement(@RequestBody List<Map<String,Object>> mapList) throws Exception {
+        int code = bmsshipStatementService.insertWaterFeesStatement(mapList);
+        return success(code);
+    }
+
+    /**
+     * 生成途损账单
+     * @param map
+     * @return
+     * @throws Exception
+     */
+    @ApiModelProperty(value = "生成途损账单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "map", value = "批次", required = false, dataType = "java.util.List"),
+    })
+    @PostMapping("/addLossStatement")
+    public RESTfulResult addLossStatement(@RequestBody Map<String,Object> map) throws Exception {
+        Integer batchId = (Integer) map.get("batchId");
+        List<Map<String, Object>> calDataList = bmstruckFormulaService.getCalData(new BigDecimal(batchId));
+        Map<String, Object> calDataMap = calDataList.get(0);
+        BigDecimal shipWeight = (BigDecimal) calDataMap.get("shipWeight");
+        BigDecimal moistureContent = (BigDecimal) calDataMap.get("moistureContent");
+        BigDecimal count = (BigDecimal) calDataMap.get("count");
+        BigDecimal arrivalWeight = bmstruckFormulaService.getArrivalWeight(new BigDecimal(batchId));
+        Double result = (shipWeight.doubleValue() * (1 - 0.015) * (1 - moistureContent.doubleValue()/count.doubleValue())) - (arrivalWeight.doubleValue() * (1 - 0.091));
+        if (result > 0) {
+            bmsshipStatementService.insertLossStatement(new BigDecimal(batchId));
+        }
+        return success(result);
+    }
+
+    /**
+     * 展示账单下的详单
+     * @param batchId
+     * @param mapVal
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiOperation(value="展示账单下的详单", notes="分页查询")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "batchId", value = "批次id", required = false, dataType = "BigDecimal"),
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "93", required = false, dataType = "BigDecimal"),
+    })
+    @PostMapping(value = "/getStatementDetailsOrderList")
+    public RESTfulResult getStatementDetailsOrderList(BigDecimal batchId,@RequestBody(required = false) Map<String,Object> mapVal,
+                                                      Integer pageNum,
+                                                      Integer pageSize,
+                                                      Integer apiId,
+                                                      BigDecimal statementId){
+        if (mapVal==null) {
+            mapVal = new HashMap<>();
+        }
+        mapVal.put("batchId",batchId);
+        mapVal.put("statementId",statementId);
+        List<Map<String,Object>> list = bmsshipStatementService.getDetailsOrder(mapVal);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipStatementService.getDetailsOrder(mapVal);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 展示账单下的所有费用
+     * @param batchId
+     * @return
+     */
+    @ApiOperation(value="展示账单下的所有费用")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "batchId", value = "账单id", required = false, dataType = "BigDecimal"),
+    })
+    @PostMapping(value = "/getAllCost")
+    public RESTfulResult getAllCost(BigDecimal batchId) throws Exception {
+        // 损失费
+        BigDecimal lossCost = bmstruckFormulaService.generateLossCost(batchId);
+        // 水分检测费
+        BigDecimal waterFees = new BigDecimal(bmstruckFormulaService.selectWaterFees(batchId));
+        // 总金额和支付单位
+        List<Map<String,Object>> listMap = bmsshipStatementService.getShipperAndAmount(batchId);
+        Map map = listMap.get(0);
+        // 总金额
+        BigDecimal totalAmount = (BigDecimal) map.get("statementTotalAmount");
+        Double shipCostDouble = (totalAmount.doubleValue() - lossCost.doubleValue() - waterFees.doubleValue());
+        DecimalFormat df = new DecimalFormat("0.00");
+        String shipCost = df.format(shipCostDouble);
+        String lossCostStr = df.format(lossCost.doubleValue());
+        map.put("lossCost",lossCostStr);
+        map.put("waterFees",waterFees);
+        map.put("shipCost",shipCost);
+        return success(listMap);
+    }
+
+    /**
+     * 展示详单下的船运实绩
+     * @param batchId
+     * @param mapVal
+     * @param pageNum
+     * @param pageSize
+     * @param apiId
+     * @return
+     */
+    @ApiOperation(value="展示详单下的船运实绩", notes="分页查询")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "batchId", value = "账单id", required = false, dataType = "BigDecimal",paramType = "path"),
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "112", required = false, dataType = "BigDecimal"),
+    })
+    @PostMapping(value = "/getShipResult")
+    public RESTfulResult getShipResult(BigDecimal batchId,@RequestBody(required = false) Map<String,Object> mapVal,
+                                        Integer pageNum,
+                                        Integer pageSize,
+                                        Integer apiId){
+        if (mapVal==null) {
+            mapVal = new HashMap<>();
+        }
+        mapVal.put("batchId",batchId);
+        List<Map<String,Object>> list = bmsshipStatementService.getShipResult(mapVal);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmsshipStatementService.getShipResult(mapVal);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+
+
+}

+ 58 - 0
src/main/java/com/steerinfo/dil/controller/BmstruckFormulaController.java

@@ -0,0 +1,58 @@
+package com.steerinfo.dil.controller;
+
+import com.steerinfo.dil.service.impl.BmstruckFormulaServiceImpl;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.framework.controller.RESTfulResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/6 17:34
+ * @Version:V2.0
+ */
+@RestController
+@RequestMapping("/${api.version}/bmsshipformulas")
+public class BmstruckFormulaController extends BaseRESTfulController {
+
+    @Autowired
+    BmstruckFormulaServiceImpl bmstruckFormulaService;
+
+    /**
+     * 查询水运费计算公式
+     * @return
+     */
+    @ApiOperation(value = "查询水运费计算公式")
+    @PostMapping("/getShipFeesFormula")
+    public RESTfulResult getShipFeesFormula(){
+        Map<String, Object> map = bmstruckFormulaService.selectAnyFormula(new BigDecimal(4));
+        return success(map);
+    }
+
+    /**
+     * 查询途损费计算公式
+     * @return
+     */
+    @ApiOperation(value = "查询水运费计算公式")
+    @PostMapping("/getLossFeesFormula")
+    public RESTfulResult getLossFeesFormula(){
+        return success(bmstruckFormulaService.selectAnyFormula(new BigDecimal(5)));
+    }
+
+    /**
+     * 查询水运费计算公式
+     * @return
+     */
+    @ApiOperation(value = "查询水运费计算公式")
+    @PostMapping("/getWaterFeesFormula")
+    public RESTfulResult getWaterFeesFormula(){
+        return success(bmstruckFormulaService.selectAnyFormula(new BigDecimal(6)));
+    }
+}

+ 19 - 0
src/main/java/com/steerinfo/dil/feign/ColumnDataFeign.java

@@ -0,0 +1,19 @@
+package com.steerinfo.dil.feign;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/6/23 9:58
+ * @Version 1.0
+ */
+@FeignClient(value = "DIL-COLUMN-DATA-DEV",url = "192.168.10.167:8083")
+public interface ColumnDataFeign {
+    @RequestMapping("getColumnData")
+    List<Map<String,Object>> getColumnData(@RequestParam("apiId") Integer apiId);
+}

+ 26 - 0
src/main/java/com/steerinfo/dil/interceptors/MyLocaleChangeInterceptor.java

@@ -0,0 +1,26 @@
+package com.steerinfo.dil.interceptors;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.support.ReloadableResourceBundleMessageSource;
+import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
+import org.springframework.web.servlet.i18n.SessionLocaleResolver;
+
+import java.util.Locale;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/4/23 8:19
+ * @Version 1.0
+ */
+
+@Configuration
+public class MyLocaleChangeInterceptor {
+
+    //国际化配置
+    @Bean
+    public LocaleChangeInterceptor localeChangeInterceptor(){
+        return new LocaleChangeInterceptor();
+    }
+
+}

+ 60 - 0
src/main/java/com/steerinfo/dil/mapper/BmsshipDetailsOrderMapper.java

@@ -0,0 +1,60 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.BmsshipDetailsOrder;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/7 17:11
+ * @Version:V2.0
+ */
+@Mapper
+public interface BmsshipDetailsOrderMapper  extends IBaseMapper<BmsshipDetailsOrder, BigDecimal> {
+
+    /**
+     * 展示所有详单信息
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getDetailsOrderList(Map<String,Object> mapValue);
+
+    /**
+     * 展示未生成账单的详单信息
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getUncomplateDetailsOrderList(Map<String,Object> mapValue);
+
+    /**
+     * 新增详单
+     * @param bmsshipDetailsOrder
+     * @return
+     */
+    int insertSelective(BmsshipDetailsOrder bmsshipDetailsOrder);
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    BigDecimal selectMaxId();
+
+    /**
+     * 根据主键查询详单信息
+     * @param detailsId
+     * @return
+     */
+    BmsshipDetailsOrder selectByPrimaryKey(BigDecimal detailsId);
+
+    /**
+     * 修改详单状态
+     * @param bmsshipDetailsOrder
+     * @return
+     */
+    int updateByPrimaryKeySelective(BmsshipDetailsOrder bmsshipDetailsOrder);
+}

+ 25 - 0
src/main/java/com/steerinfo/dil/mapper/BmsshipDetailsStatementMapper.java

@@ -0,0 +1,25 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.BmsshipDetailsStatement;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import java.math.*;
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BmsshipDetailsStatementMapper extends IBaseMapper<BmsshipDetailsStatement, BigDecimal> {
+
+    /**
+     * 批次插入详单账单关系
+     * @param bmsshipDetailsStatement
+     * @return
+     */
+    int insertSelective(BmsshipDetailsStatement bmsshipDetailsStatement);
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    BigDecimal selectMaxId();
+}

+ 82 - 0
src/main/java/com/steerinfo/dil/mapper/BmsshipStatementMapper.java

@@ -0,0 +1,82 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.BmsshipStatement;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import java.math.*;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BmsshipStatementMapper extends IBaseMapper<BmsshipStatement, BigDecimal> {
+
+    /**
+     * 生成账单
+     * @param bmsshipStatement
+     * @return
+     */
+    int insertSelective(BmsshipStatement bmsshipStatement);
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    BigDecimal selectMaxId();
+
+    /**
+     * 展示账单列表
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getStatementList(Map<String,Object> mapValue);
+
+    /**
+     * 展示途损费账单列表
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getLossStatementList(Map<String,Object> mapValue);
+
+    /**
+     * 展示账单中的详单
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getDetailsOrder(Map<String,Object> mapValue);
+
+    /**
+     * 得到支付单位和总金额
+     * @param batchId
+     * @return
+     */
+    List<Map<String,Object>> getShipperAndAmount(BigDecimal batchId);
+
+    /**
+     * 查询汽运实绩
+     * @param batchId
+     * @return
+     */
+    List<Map<String,Object>> getTruckResult(BigDecimal batchId);
+
+    /**
+     * 查询船运实绩
+     * @param mapVal
+     * @return
+     */
+    List<Map<String,Object>> getShipResult(Map<String,Object> mapVal);
+
+    /**
+     * 展示途损费账单列表
+     * @param mapVal
+     * @return
+     */
+    List<Map<String,Object>> getWaterResult(Map<String,Object> mapVal);
+
+    /**
+     * 得到批次信息
+     * @param mapVal
+     * @return
+     */
+    List<Map<String,Object>> getBatch(Map<String,Object> mapVal);
+}

+ 95 - 0
src/main/java/com/steerinfo/dil/mapper/BmstruckFormulaMapper.java

@@ -0,0 +1,95 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.BmstruckFormula;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import java.math.*;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BmstruckFormulaMapper extends IBaseMapper<BmstruckFormula, BigDecimal> {
+
+    /**
+     * 查询价格日期
+     * @return
+     */
+    List<Map<String,Object>> selectPriceDate();
+
+
+    /**
+     * 查询装船日期和装船比例
+     * @return
+     */
+    List<Map<String,Object>> selectLoadShipDate(BigDecimal batchId);
+
+    /**
+     * 获取到厂湿吨
+     * @param resultTotalId
+     * @return
+     */
+    BigDecimal selectArrivalWeight(BigDecimal resultTotalId);
+
+    /**
+     * 获取批次id
+     * @param weightTaskResultId
+     * @return
+     */
+    BigDecimal selectBatchId(BigDecimal weightTaskResultId);
+
+    /**
+     * 根据批次id得到采购订单id
+     * @param batchId
+     * @return
+     */
+    BigDecimal selectPurchaseId(BigDecimal batchId);
+
+    /**
+     * 得到一个批次下的水分质检费总和
+     * @param batchId
+     * @return
+     */
+    Double selectWaterFees(BigDecimal batchId);
+
+    /**
+     * 通过出厂实绩查询总实绩id
+     * @param resultId
+     * @return
+     */
+    BigDecimal selectTotalId(BigDecimal resultId);
+
+    /**
+     * 得到计算因子
+     * @param batchId
+     * @return
+     */
+    List<Map<String,Object>> getCalData(BigDecimal batchId);
+
+    /**
+     * 查询到厂总湿重
+     * @param batchId
+     * @return
+     */
+    BigDecimal getArrivalWeight(BigDecimal batchId);
+
+    /**
+     * 得到单价
+     * @param batchId
+     * @return
+     */
+    BigDecimal getUnitPrice(BigDecimal batchId);
+
+    /**
+     * 根据计重实绩得到水运计费公式
+     * @return
+     */
+    String selectFormula(BigDecimal formula);
+
+    /**
+     * 根据主键查询计费公式
+     * @param formulaId
+     * @return
+     */
+    Map<String,Object> selectAnyFormula(BigDecimal formulaId);
+}

+ 228 - 0
src/main/java/com/steerinfo/dil/model/BmsshipDetailsOrder.java

@@ -0,0 +1,228 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="船运计费详单")
+public class BmsshipDetailsOrder implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(DETAILS_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal detailsId;
+
+    /**
+     * 采购订单ID(PURCHASE_ORDER_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="采购订单ID",required=false)
+    private BigDecimal purchaseOrderId;
+
+    /**
+     * 详单号(DETAILS_NO,VARCHAR,20)
+     */
+    @ApiModelProperty(value="详单号",required=false)
+    private String detailsNo;
+
+    /**
+     * 详单时间(DETAILS_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="详单时间",required=false)
+    private Date detailsTime;
+
+    /**
+     * 费用类别(0:水运费:1:物流途损超标扣款:2:水分检测费)(DETAILS_FEE_TYPE,VARCHAR,20)
+     */
+    @ApiModelProperty(value="费用类别(0:水运费:1:物流途损超标扣款:2:水分检测费)",required=false)
+    private String detailsFeeType;
+
+    /**
+     * 金额(DETAILS_AMOUNT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="金额",required=false)
+    private BigDecimal detailsAmount;
+
+    /**
+     * 是否已开账单(0:未开,1:已开)(WETHER_TO_STATEMENT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="是否已开账单(0:未开,1:已开)",required=false)
+    private BigDecimal wetherToStatement;
+
+    /**
+     * 车运到厂的总实绩ID(TRUCK_RESULT_TOTAL_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="车运到厂的总实绩ID",required=false)
+    private BigDecimal truckResultTotalId;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.detailsId;
+    }
+
+    @Override
+    public void setId(BigDecimal detailsId) {
+        this.detailsId = detailsId;
+    }
+
+    public BigDecimal getDetailsId() {
+        return detailsId;
+    }
+
+    public void setDetailsId(BigDecimal detailsId) {
+        this.detailsId = detailsId;
+    }
+
+    public BigDecimal getPurchaseOrderId() {
+        return purchaseOrderId;
+    }
+
+    public void setPurchaseOrderId(BigDecimal purchaseOrderId) {
+        this.purchaseOrderId = purchaseOrderId;
+    }
+
+    public String getDetailsNo() {
+        return detailsNo;
+    }
+
+    public void setDetailsNo(String detailsNo) {
+        this.detailsNo = detailsNo == null ? null : detailsNo.trim();
+    }
+
+    public Date getDetailsTime() {
+        return detailsTime;
+    }
+
+    public void setDetailsTime(Date detailsTime) {
+        this.detailsTime = detailsTime;
+    }
+
+    public String getDetailsFeeType() {
+        return detailsFeeType;
+    }
+
+    public void setDetailsFeeType(String detailsFeeType) {
+        this.detailsFeeType = detailsFeeType == null ? null : detailsFeeType.trim();
+    }
+
+    public BigDecimal getDetailsAmount() {
+        return detailsAmount;
+    }
+
+    public void setDetailsAmount(BigDecimal detailsAmount) {
+        this.detailsAmount = detailsAmount;
+    }
+
+    public BigDecimal getWetherToStatement() {
+        return wetherToStatement;
+    }
+
+    public void setWetherToStatement(BigDecimal wetherToStatement) {
+        this.wetherToStatement = wetherToStatement;
+    }
+
+    public BigDecimal getTruckResultTotalId() {
+        return truckResultTotalId;
+    }
+
+    public void setTruckResultTotalId(BigDecimal truckResultTotalId) {
+        this.truckResultTotalId = truckResultTotalId;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", detailsId=").append(detailsId);
+        sb.append(", purchaseOrderId=").append(purchaseOrderId);
+        sb.append(", detailsNo=").append(detailsNo);
+        sb.append(", detailsTime=").append(detailsTime);
+        sb.append(", detailsFeeType=").append(detailsFeeType);
+        sb.append(", detailsAmount=").append(detailsAmount);
+        sb.append(", wetherToStatement=").append(wetherToStatement);
+        sb.append(", truckResultTotalId=").append(truckResultTotalId);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 153 - 0
src/main/java/com/steerinfo/dil/model/BmsshipDetailsStatement.java

@@ -0,0 +1,153 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="采购船运详单账单中间表")
+public class BmsshipDetailsStatement implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(DETAILS_STATEMENT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal detailsStatementId;
+
+    /**
+     * 账单ID(STATEMENT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="账单ID",required=false)
+    private BigDecimal statementId;
+
+    /**
+     * 详单ID(DETAILS_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="详单ID",required=false)
+    private BigDecimal detailsId;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.detailsStatementId;
+    }
+
+    @Override
+    public void setId(BigDecimal detailsStatementId) {
+        this.detailsStatementId = detailsStatementId;
+    }
+
+    public BigDecimal getDetailsStatementId() {
+        return detailsStatementId;
+    }
+
+    public void setDetailsStatementId(BigDecimal detailsStatementId) {
+        this.detailsStatementId = detailsStatementId;
+    }
+
+    public BigDecimal getStatementId() {
+        return statementId;
+    }
+
+    public void setStatementId(BigDecimal statementId) {
+        this.statementId = statementId;
+    }
+
+    public BigDecimal getDetailsId() {
+        return detailsId;
+    }
+
+    public void setDetailsId(BigDecimal detailsId) {
+        this.detailsId = detailsId;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", detailsStatementId=").append(detailsStatementId);
+        sb.append(", statementId=").append(statementId);
+        sb.append(", detailsId=").append(detailsId);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 198 - 0
src/main/java/com/steerinfo/dil/model/BmsshipStatement.java

@@ -0,0 +1,198 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="船运计费账单")
+public class BmsshipStatement implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(STATEMENT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal statementId;
+
+    /**
+     * 账单编号(STATEMENT_NO,VARCHAR,20)
+     */
+    @ApiModelProperty(value="账单编号",required=false)
+    private String statementNo;
+
+    /**
+     * 支付单位ID(STATEMENT_SHIPPER_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="支付单位ID",required=false)
+    private BigDecimal statementShipperId;
+
+    /**
+     * 总金额(STATEMENT_TOTAL_AMOUNT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="总金额",required=false)
+    private BigDecimal statementTotalAmount;
+
+    /**
+     * 账单日期(默认每月截至20号)(STATEMENT_DATE,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="账单日期(默认每月截至20号)",required=false)
+    private Date statementDate;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 费用类型:水运费,途损费,水分检测费(STATEMENT_TYPE,VARCHAR,20)
+     */
+    @ApiModelProperty(value="费用类型:水运费,途损费,水分检测费",required=false)
+    private String statementType;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.statementId;
+    }
+
+    @Override
+    public void setId(BigDecimal statementId) {
+        this.statementId = statementId;
+    }
+
+    public BigDecimal getStatementId() {
+        return statementId;
+    }
+
+    public void setStatementId(BigDecimal statementId) {
+        this.statementId = statementId;
+    }
+
+    public String getStatementNo() {
+        return statementNo;
+    }
+
+    public void setStatementNo(String statementNo) {
+        this.statementNo = statementNo == null ? null : statementNo.trim();
+    }
+
+    public BigDecimal getStatementShipperId() {
+        return statementShipperId;
+    }
+
+    public void setStatementShipperId(BigDecimal statementShipperId) {
+        this.statementShipperId = statementShipperId;
+    }
+
+    public BigDecimal getStatementTotalAmount() {
+        return statementTotalAmount;
+    }
+
+    public void setStatementTotalAmount(BigDecimal statementTotalAmount) {
+        this.statementTotalAmount = statementTotalAmount;
+    }
+
+    public Date getStatementDate() {
+        return statementDate;
+    }
+
+    public void setStatementDate(Date statementDate) {
+        this.statementDate = statementDate;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getStatementType() {
+        return statementType;
+    }
+
+    public void setStatementType(String statementType) {
+        this.statementType = statementType == null ? null : statementType.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", statementId=").append(statementId);
+        sb.append(", statementNo=").append(statementNo);
+        sb.append(", statementShipperId=").append(statementShipperId);
+        sb.append(", statementTotalAmount=").append(statementTotalAmount);
+        sb.append(", statementDate=").append(statementDate);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", statementType=").append(statementType);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 213 - 0
src/main/java/com/steerinfo/dil/model/BmstruckFormula.java

@@ -0,0 +1,213 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="计算公式")
+public class BmstruckFormula implements IBasePO<BigDecimal> {
+    /**
+     * 主键id(FORMULA_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键id",required=true)
+    private BigDecimal formulaId;
+
+    /**
+     * 税率id(TAX_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="税率id",required=false)
+    private BigDecimal taxId;
+
+    /**
+     * 条件结果公式(CHILDREN_CONDITION_FORMULA,VARCHAR,200)
+     */
+    @ApiModelProperty(value="条件结果公式",required=false)
+    private String childrenConditionFormula;
+
+    /**
+     * 条件(CHILDREN_CONDITION_JUDGE,VARCHAR,20)
+     */
+    @ApiModelProperty(value="条件",required=false)
+    private String childrenConditionJudge;
+
+    /**
+     * 公式名称(FORMULA_NAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="公式名称",required=false)
+    private String formulaName;
+
+    /**
+     * 公式字符串(FORMULA_STRING,VARCHAR,200)
+     */
+    @ApiModelProperty(value="公式字符串",required=false)
+    private String formulaString;
+
+    /**
+     * 违约金id(VIOLATION_TYPE_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="违约金id",required=false)
+    private BigDecimal violationTypeId;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.formulaId;
+    }
+
+    @Override
+    public void setId(BigDecimal formulaId) {
+        this.formulaId = formulaId;
+    }
+
+    public BigDecimal getFormulaId() {
+        return formulaId;
+    }
+
+    public void setFormulaId(BigDecimal formulaId) {
+        this.formulaId = formulaId;
+    }
+
+    public BigDecimal getTaxId() {
+        return taxId;
+    }
+
+    public void setTaxId(BigDecimal taxId) {
+        this.taxId = taxId;
+    }
+
+    public String getChildrenConditionFormula() {
+        return childrenConditionFormula;
+    }
+
+    public void setChildrenConditionFormula(String childrenConditionFormula) {
+        this.childrenConditionFormula = childrenConditionFormula == null ? null : childrenConditionFormula.trim();
+    }
+
+    public String getChildrenConditionJudge() {
+        return childrenConditionJudge;
+    }
+
+    public void setChildrenConditionJudge(String childrenConditionJudge) {
+        this.childrenConditionJudge = childrenConditionJudge == null ? null : childrenConditionJudge.trim();
+    }
+
+    public String getFormulaName() {
+        return formulaName;
+    }
+
+    public void setFormulaName(String formulaName) {
+        this.formulaName = formulaName == null ? null : formulaName.trim();
+    }
+
+    public String getFormulaString() {
+        return formulaString;
+    }
+
+    public void setFormulaString(String formulaString) {
+        this.formulaString = formulaString == null ? null : formulaString.trim();
+    }
+
+    public BigDecimal getViolationTypeId() {
+        return violationTypeId;
+    }
+
+    public void setViolationTypeId(BigDecimal violationTypeId) {
+        this.violationTypeId = violationTypeId;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", formulaId=").append(formulaId);
+        sb.append(", taxId=").append(taxId);
+        sb.append(", childrenConditionFormula=").append(childrenConditionFormula);
+        sb.append(", childrenConditionJudge=").append(childrenConditionJudge);
+        sb.append(", formulaName=").append(formulaName);
+        sb.append(", formulaString=").append(formulaString);
+        sb.append(", violationTypeId=").append(violationTypeId);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 57 - 0
src/main/java/com/steerinfo/dil/service/IBmsshipDetailsOrderService.java

@@ -0,0 +1,57 @@
+package com.steerinfo.dil.service;
+
+import com.steerinfo.dil.model.BmsshipDetailsOrder;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/7 17:14
+ * @Version:V2.0
+ */
+public interface IBmsshipDetailsOrderService {
+
+    /**
+     * 展示所有详单信息
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getDetailsOrderList(Map<String,Object> mapValue);
+
+    /**
+     * 新增详单
+     * @param resultId
+     * @return
+     */
+    int insertSelective(BigDecimal resultId) throws Exception;
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    BigDecimal selectMaxId();
+
+    /**
+     * 根据主键查询详单信息
+     * @param detailsId
+     * @return
+     */
+    BmsshipDetailsOrder selectByPrimaryKey(BigDecimal detailsId);
+
+    /**
+     * 修改详单状态
+     * @param bmsshipDetailsOrder
+     * @return
+     */
+    int updateByPrimaryKeySelective(BmsshipDetailsOrder bmsshipDetailsOrder);
+
+    /**
+     * 展示未生成账单的详单信息
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getUncomplateDetailsOrderList(Map<String,Object> mapValue);
+}

+ 28 - 0
src/main/java/com/steerinfo/dil/service/IBmsshipDetailsStatementService.java

@@ -0,0 +1,28 @@
+package com.steerinfo.dil.service;
+
+import com.steerinfo.dil.model.BmsshipDetailsStatement;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/9 8:46
+ * @Version:V2.0
+ */
+public interface IBmsshipDetailsStatementService {
+
+    /**
+     * 批次插入详单账单关系
+     * @param bmsshipDetailsStatement
+     * @return
+     */
+    int insertSelective(BmsshipDetailsStatement bmsshipDetailsStatement);
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    BigDecimal selectMaxId();
+}

+ 85 - 0
src/main/java/com/steerinfo/dil/service/IBmsshipStatementService.java

@@ -0,0 +1,85 @@
+package com.steerinfo.dil.service;
+
+import com.steerinfo.dil.model.BmsshipStatement;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/8 19:25
+ * @Version:V2.0
+ */
+public interface IBmsshipStatementService {
+
+    /**
+     * 生成账单
+     * @param listMap
+     * @return
+     */
+    int insertSelective(List<Map<String, Object>> listMap) throws Exception;
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    BigDecimal selectMaxId();
+
+    /**
+     * 展示账单列表
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getStatementList(Map<String,Object> mapValue);
+
+    /**
+     * 展示账单中的详单
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getDetailsOrder(Map<String,Object> mapValue);
+
+    /**
+     * 得到支付单位和总金额
+     * @param batchId
+     * @return
+     */
+    List<Map<String,Object>> getShipperAndAmount(BigDecimal batchId);
+
+    /**
+     * 查询汽运实绩
+     * @param batchId
+     * @return
+     */
+    List<Map<String,Object>> getTruckResult(BigDecimal batchId);
+
+    /**
+     * 查询船运实绩
+     * @param mapVal
+     * @return
+     */
+    List<Map<String,Object>> getShipResult(Map<String,Object> mapVal);
+
+    /**
+     * 展示途损费账单列表
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getLossStatementList(Map<String,Object> mapValue);
+
+    /**
+     * 展示途损费账单列表
+     * @param mapValue
+     * @return
+     */
+    List<Map<String,Object>> getWaterResult(Map<String,Object> mapValue);
+
+    /**
+     * 得到批次信息
+     * @param mapVal
+     * @return
+     */
+    List<Map<String,Object>> getBatch(Map<String,Object> mapVal);
+}

+ 129 - 0
src/main/java/com/steerinfo/dil/service/IBmstruckFormulaService.java

@@ -0,0 +1,129 @@
+package com.steerinfo.dil.service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/6 17:32
+ * @Version:V2.0
+ */
+public interface IBmstruckFormulaService {
+
+    /**
+     * 查询价格日期
+     * @return
+     */
+    List<Double> selectPriceValue(BigDecimal batchId);
+
+    /**
+     * 得到月装船比例
+     * @param batchId
+     * @return
+     */
+    List<Double> selectShipMentRatio(BigDecimal batchId);
+
+    /**
+     * 查询装船日期
+     * @param batchId
+     * @return
+     */
+    List<String> selectLoadShipDate(BigDecimal batchId);
+
+    /**
+     * 获取到厂湿吨
+     * @param resultTotalId
+     * @return
+     */
+    BigDecimal selectArrivalWeight(BigDecimal resultTotalId);
+
+    /**
+     * 获取批次id
+     * @param resultTotalId
+     * @return
+     */
+    BigDecimal selectBatchId(BigDecimal resultTotalId);
+
+    /**
+     * 得到一个批次下的水分质检费总和
+     * @param batchId
+     * @return
+     */
+    Double selectWaterFees(BigDecimal batchId);
+
+    /**
+     * 根据批次id得到采购订单id
+     * @param batchId
+     * @return
+     */
+    BigDecimal selectPurchaseId(BigDecimal batchId);
+
+
+    /**
+     * 替换计算公式并进行计算
+     * @param weightTaskResultId
+     * @return
+     * @throws Exception
+     */
+    BigDecimal generateDetailedOrder(BigDecimal weightTaskResultId) throws Exception;
+
+    /**
+     * 替换途损费计费公式并进行计算
+     * @param batchId
+     * @return
+     * @throws Exception
+     */
+    BigDecimal generateLossCost(BigDecimal batchId) throws Exception;
+
+    /**
+     * 通过出厂实绩查询总实绩id
+     * @param resultId
+     * @return
+     */
+    BigDecimal selectTotalId(BigDecimal resultId);
+
+    /**
+     * 得到计算因子
+     * @param batchId
+     * @return
+     */
+    List<Map<String,Object>> getCalData(BigDecimal batchId);
+
+    /**
+     * 查询到厂总湿重
+     * @param batchId
+     * @return
+     */
+    BigDecimal getArrivalWeight(BigDecimal batchId);
+
+    /**
+     * 得到单价
+     * @param batchId
+     * @return
+     */
+    BigDecimal getUnitPrice(BigDecimal batchId);
+
+    /**
+     * 根据计重实绩得到计费公式
+     * @return
+     */
+    String selectFormula(BigDecimal formula);
+
+    /**
+     * 水分检测计算公式
+     * @param mapList
+     * @return
+     * @throws Exception
+     */
+    BigDecimal generateWaterFees(List<Map<String,Object>> mapList) throws Exception;
+
+    /**
+     * 根据主键查询计费公式
+     * @param formulaId
+     * @return
+     */
+    Map<String,Object> selectAnyFormula(BigDecimal formulaId);
+}

+ 124 - 0
src/main/java/com/steerinfo/dil/service/impl/BmsshipDetailsOrderSerivceImpl.java

@@ -0,0 +1,124 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.BmsshipDetailsOrderMapper;
+import com.steerinfo.dil.model.BmsshipDetailsOrder;
+import com.steerinfo.dil.service.IBmsshipDetailsOrderService;
+import com.steerinfo.dil.util.NoUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/7 17:15
+ * @Version:V2.0
+ */
+@Service
+public class BmsshipDetailsOrderSerivceImpl implements IBmsshipDetailsOrderService {
+
+    @Autowired
+    BmsshipDetailsOrderMapper bmsshipDetailsOrderMapper;
+    @Autowired
+    BmstruckFormulaServiceImpl bmstruckFormulaService;
+    @Autowired
+    NoUtil noUtil;
+
+    /**
+     * 展示详单信息
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getDetailsOrderList(Map<String, Object> mapValue) {
+        return bmsshipDetailsOrderMapper.getDetailsOrderList(mapValue);
+    }
+
+    /**
+     * 通过出厂实绩查询新增详单
+     * @param resultId
+     * @return
+     */
+    @Override
+    public int insertSelective(BigDecimal resultId) throws Exception {
+        BmsshipDetailsOrder bmsshipDetailsOrder = new BmsshipDetailsOrder();
+        // 根据出厂实绩获取到总实绩id
+        BigDecimal resultTotalId = bmstruckFormulaService.selectTotalId(resultId);
+        // 得到批次id
+        BigDecimal batchId = bmstruckFormulaService.selectBatchId(resultTotalId);
+        // 得到采购订单id
+        BigDecimal purchaseOrderId = bmstruckFormulaService.selectPurchaseId(batchId);
+        // 设置采购订单id
+        bmsshipDetailsOrder.setPurchaseOrderId(purchaseOrderId);
+        // 设置汽运总实绩id
+        bmsshipDetailsOrder.setTruckResultTotalId(resultTotalId);
+        // 得到最大id设置主键
+        BigDecimal detailsId = selectMaxId();
+        bmsshipDetailsOrder.setDetailsId(detailsId);
+        // 设置详单号
+        String detailsNo = noUtil.setResultNo("XD", detailsId);
+        bmsshipDetailsOrder.setDetailsNo(detailsNo);
+        // 设置详单时间
+        bmsshipDetailsOrder.setDetailsTime(new Date());
+        // 设置费用类型
+        bmsshipDetailsOrder.setDetailsFeeType("水运费");
+        // 计算出水运费金额
+        BigDecimal amount = bmstruckFormulaService.generateDetailedOrder(resultId);
+        DecimalFormat df = new DecimalFormat("0.00");
+        String format = df.format(amount);
+        // 设置金额
+        bmsshipDetailsOrder.setDetailsAmount(new BigDecimal(format));
+        // 设置是否已开账单
+        bmsshipDetailsOrder.setWetherToStatement(new BigDecimal(0));
+        bmsshipDetailsOrder.setInsertTime(new Date());
+        bmsshipDetailsOrder.setInsertUsername("admin");
+        bmsshipDetailsOrder.setUpdateTime(new Date());
+        bmsshipDetailsOrder.setUpdateUsername("admin");
+        bmsshipDetailsOrder.setInsertUpdateRemark("无");
+        return bmsshipDetailsOrderMapper.insertSelective(bmsshipDetailsOrder);
+    }
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    @Override
+    public BigDecimal selectMaxId() {
+        return bmsshipDetailsOrderMapper.selectMaxId() == null ? new BigDecimal(1) : bmsshipDetailsOrderMapper.selectMaxId();
+    }
+
+    /**
+     * 主键查询
+     * @param detailsId
+     * @return
+     */
+    @Override
+    public BmsshipDetailsOrder selectByPrimaryKey(BigDecimal detailsId) {
+        return bmsshipDetailsOrderMapper.selectByPrimaryKey(detailsId);
+    }
+
+    /**
+     * 修改详单状态
+     * @param bmsshipDetailsOrder
+     * @return
+     */
+    @Override
+    public int updateByPrimaryKeySelective(BmsshipDetailsOrder bmsshipDetailsOrder) {
+        return bmsshipDetailsOrderMapper.updateByPrimaryKeySelective(bmsshipDetailsOrder);
+    }
+
+    /**
+     * 未生成账单的详单
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getUncomplateDetailsOrderList(Map<String, Object> mapValue) {
+        return bmsshipDetailsOrderMapper.getUncomplateDetailsOrderList(mapValue);
+    }
+}

+ 43 - 0
src/main/java/com/steerinfo/dil/service/impl/BmsshipDetailsStatementServiceImpl.java

@@ -0,0 +1,43 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.BmsshipDetailsStatementMapper;
+import com.steerinfo.dil.model.BmsshipDetailsStatement;
+import com.steerinfo.dil.service.IBmsshipDetailsStatementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/9 8:46
+ * @Version:V2.0
+ */
+@Service
+public class BmsshipDetailsStatementServiceImpl implements IBmsshipDetailsStatementService {
+
+    @Autowired
+    BmsshipDetailsStatementMapper bmsshipDetailsStatementMapper;
+
+    /**
+     * 批次插入账单详单关系
+     * @param bmsshipDetailsStatement
+     * @return
+     */
+    @Override
+    public int insertSelective(BmsshipDetailsStatement bmsshipDetailsStatement) {
+        return bmsshipDetailsStatementMapper.insertSelective(bmsshipDetailsStatement);
+    }
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    @Override
+    public BigDecimal selectMaxId() {
+        BigDecimal id = bmsshipDetailsStatementMapper.selectMaxId();
+        return id == null ? new BigDecimal(1): new BigDecimal(id.intValue() + 1);
+    }
+}

+ 240 - 0
src/main/java/com/steerinfo/dil/service/impl/BmsshipStatementServiceImpl.java

@@ -0,0 +1,240 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.BmsshipStatementMapper;
+import com.steerinfo.dil.model.BmsshipDetailsOrder;
+import com.steerinfo.dil.model.BmsshipDetailsStatement;
+import com.steerinfo.dil.model.BmsshipStatement;
+import com.steerinfo.dil.service.IBmsshipStatementService;
+import com.steerinfo.dil.util.NoUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.*;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/8 19:26
+ * @Version:V2.0
+ */
+@Service
+public class BmsshipStatementServiceImpl implements IBmsshipStatementService {
+
+    @Autowired
+    BmsshipStatementMapper bmsshipStatementMapper;
+    @Autowired
+    BmsshipDetailsStatementServiceImpl bmsshipDetailsStatementService;
+    @Autowired
+    BmsshipDetailsOrderSerivceImpl bmsshipDetailsOrderSerivce;
+    @Autowired
+    BmstruckFormulaServiceImpl bmstruckFormulaService;
+    @Autowired
+    NoUtil noUtil;
+
+    /**
+     * 生成水运费账单
+     * @param listMap
+     * @return
+     */
+    @Override
+    public int insertSelective(List<Map<String, Object>> listMap) throws Exception {
+        // 生成水运费账单
+        BmsshipStatement bmsshipStatement = new BmsshipStatement();
+        BigDecimal statementId = selectMaxId();
+        bmsshipStatement.setStatementId(statementId);
+        String statementNo = noUtil.setResultNo("ZD",statementId);
+        bmsshipStatement.setStatementNo(statementNo);
+        BigDecimal statementShipperId = new BigDecimal((Integer) listMap.get(0).get("statementShipperId"));
+        bmsshipStatement.setStatementShipperId(statementShipperId);
+        bmsshipStatement.setStatementDate(new Date());
+        // 设置常规字段
+        bmsshipStatement.setInsertTime(new Date());
+        bmsshipStatement.setInsertUsername("admin");
+        bmsshipStatement.setUpdateTime(new Date());
+        bmsshipStatement.setUpdateUsername("admin");
+        bmsshipStatement.setInsertUpdateRemark("无");
+        Double doubleTotalAmount = new Double(0);
+        // 详单-账单
+        List<BmsshipDetailsStatement> list = new LinkedList<>();
+        for (int i = 0;i < listMap.size(); i++) {
+            BigDecimal detailsStatementId = bmsshipDetailsStatementService.selectMaxId();
+            BigDecimal detailsId = new BigDecimal((Integer) listMap.get(i).get("detailsId"));
+            BmsshipDetailsOrder bmsshipDetailsOrder = bmsshipDetailsOrderSerivce.selectByPrimaryKey(detailsId);
+            bmsshipDetailsOrder.setWetherToStatement(new BigDecimal(1));
+            bmsshipDetailsOrderSerivce.updateByPrimaryKeySelective(bmsshipDetailsOrder);
+            BmsshipDetailsStatement bmsshipDetailsStatement = new BmsshipDetailsStatement();
+            bmsshipDetailsStatement.setDetailsStatementId(detailsStatementId);
+            bmsshipDetailsStatement.setStatementId(statementId);
+            bmsshipDetailsStatement.setDetailsId(detailsId);
+            // 设置常规字段
+            bmsshipDetailsStatement.setInsertTime(new Date());
+            bmsshipDetailsStatement.setInsertUsername("admin");
+            bmsshipDetailsStatement.setUpdateTime(new Date());
+            bmsshipDetailsStatement.setUpdateUsername("admin");
+            bmsshipDetailsStatement.setInsertUpdateRemark("无");
+            list.add(bmsshipDetailsStatement);
+            Object detailsAmount = listMap.get(i).get("detailsAmount");
+            Double detailsAmountDouble = Double.valueOf(detailsAmount.toString());
+            doubleTotalAmount += detailsAmountDouble;
+            bmsshipDetailsStatementService.insertSelective(bmsshipDetailsStatement);
+        }
+        DecimalFormat df = new DecimalFormat("0.00");
+        String statementTotalAmount = df.format(doubleTotalAmount);
+        bmsshipStatement.setStatementTotalAmount(new BigDecimal(statementTotalAmount));
+        bmsshipStatement.setStatementType("水运费");
+        int code = bmsshipStatementMapper.insertSelective(bmsshipStatement);
+        return code;
+    }
+
+    /**
+     * 生成质检费账单
+     * @param mapList
+     * @return
+     */
+    public int insertWaterFeesStatement(List<Map<String,Object>> mapList) throws Exception {
+        // 生成水运费账单
+        BmsshipStatement bmsshipStatement = new BmsshipStatement();
+        BigDecimal statementId = selectMaxId();
+        bmsshipStatement.setStatementId(statementId);
+        String statementNo = noUtil.setResultNo("ZD",statementId);
+        bmsshipStatement.setStatementNo(statementNo);
+        bmsshipStatement.setStatementDate(new Date());
+        BigDecimal doubleTotalAmount = bmstruckFormulaService.generateWaterFees(mapList);
+        // 详单-账单
+        DecimalFormat df = new DecimalFormat("0.00");
+        String statementTotalAmount = df.format(doubleTotalAmount.doubleValue());
+        bmsshipStatement.setStatementTotalAmount(new BigDecimal(statementTotalAmount));
+        bmsshipStatement.setStatementType("水分检测费");
+        // 设置常规字段
+        bmsshipStatement.setInsertTime(new Date());
+        bmsshipStatement.setInsertUsername("admin");
+        bmsshipStatement.setUpdateTime(new Date());
+        bmsshipStatement.setUpdateUsername("admin");
+        bmsshipStatement.setInsertUpdateRemark("无");
+        bmsshipStatement.setStatementShipperId(new BigDecimal(1));
+        int code = bmsshipStatementMapper.insertSelective(bmsshipStatement);
+        return code;
+    }
+
+    /**
+     * 生成物流途损超标扣款账单
+     * @param batchId
+     * @return
+     */
+    public int insertLossStatement(BigDecimal batchId) throws Exception {
+        // 生成水运费账单
+        BmsshipStatement bmsshipStatement = new BmsshipStatement();
+        BigDecimal statementId = selectMaxId();
+        bmsshipStatement.setStatementId(statementId);
+        String statementNo = noUtil.setResultNo("ZD",statementId);
+        bmsshipStatement.setStatementNo(statementNo);
+        bmsshipStatement.setStatementDate(new Date());
+        bmsshipStatement.setStatementShipperId(new BigDecimal(1));
+        BigDecimal doubleTotalAmount = bmstruckFormulaService.generateLossCost(batchId);
+        // 详单-账单
+        DecimalFormat df = new DecimalFormat("0.00");
+        String statementTotalAmount = df.format(doubleTotalAmount.doubleValue());
+        bmsshipStatement.setStatementTotalAmount(new BigDecimal(statementTotalAmount));
+        bmsshipStatement.setStatementType("物流途损超标扣款");
+        // 设置常规字段
+        bmsshipStatement.setInsertTime(new Date());
+        bmsshipStatement.setInsertUsername("admin");
+        bmsshipStatement.setUpdateTime(new Date());
+        bmsshipStatement.setUpdateUsername("admin");
+        bmsshipStatement.setInsertUpdateRemark("无");
+        int code = bmsshipStatementMapper.insertSelective(bmsshipStatement);
+        return code;
+    }
+
+    /**
+     * 得到最大id
+     * @return
+     */
+    @Override
+    public BigDecimal selectMaxId() {
+        BigDecimal id = bmsshipStatementMapper.selectMaxId();
+        return id == null ? new BigDecimal(1): new BigDecimal(id.intValue() + 1);
+    }
+
+    /**
+     * 展示账单信息
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getStatementList(Map<String, Object> mapValue) {
+        return bmsshipStatementMapper.getStatementList(mapValue);
+    }
+
+    /**
+     * 展示账单中的详单
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getDetailsOrder(Map<String, Object> mapValue) {
+        return bmsshipStatementMapper.getDetailsOrder(mapValue);
+    }
+
+    /**
+     * 得到总金额和支付单位
+     * @param batchId
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getShipperAndAmount(BigDecimal batchId) {
+        return bmsshipStatementMapper.getShipperAndAmount(batchId);
+    }
+
+    /**
+     * 得到汽运实绩
+     * @param batchId
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getTruckResult(BigDecimal batchId) {
+        return bmsshipStatementMapper.getTruckResult(batchId);
+    }
+
+    /**
+     * 得到船运实绩
+     * @param mapVal
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getShipResult(Map<String,Object> mapVal) {
+        return bmsshipStatementMapper.getShipResult(mapVal);
+    }
+
+    /**
+     * 展示途损费账单列表
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getLossStatementList(Map<String, Object> mapValue) {
+        return bmsshipStatementMapper.getLossStatementList(mapValue);
+    }
+
+    /**
+     * 展示水分检测实绩
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getWaterResult(Map<String, Object> mapValue) {
+        return bmsshipStatementMapper.getWaterResult(mapValue);
+    }
+
+    /**
+     * 得到批次信息
+     * @param mapVal
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getBatch(Map<String, Object> mapVal) {
+        return bmsshipStatementMapper.getBatch(mapVal);
+    }
+}

+ 532 - 0
src/main/java/com/steerinfo/dil/service/impl/BmstruckFormulaServiceImpl.java

@@ -0,0 +1,532 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.BmstruckFormulaMapper;
+import com.steerinfo.dil.service.IBmstruckFormulaService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/6 17:33
+ * @Version:V2.0
+ */
+@Service
+public class BmstruckFormulaServiceImpl implements IBmstruckFormulaService {
+
+    @Autowired
+    BmstruckFormulaMapper bmstruckFormulaMapper;
+
+
+    /**
+     * 通过出厂实绩得到总实绩id
+     * @param resultId
+     * @return
+     */
+    @Override
+    public BigDecimal selectTotalId(BigDecimal resultId) {
+        return bmstruckFormulaMapper.selectTotalId(resultId);
+    }
+
+    /**
+     * 得到途损费计算因子
+     * @param batchId
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getCalData(BigDecimal batchId) {
+        return bmstruckFormulaMapper.getCalData(batchId);
+    }
+
+    /**
+     * 得到到厂总湿重
+     * @param batchId
+     * @return
+     */
+    @Override
+    public BigDecimal getArrivalWeight(BigDecimal batchId) {
+        return bmstruckFormulaMapper.getArrivalWeight(batchId);
+    }
+
+    /**
+     * 得到单价
+     * @param batchId
+     * @return
+     */
+    @Override
+    public BigDecimal getUnitPrice(BigDecimal batchId) {
+        return bmstruckFormulaMapper.getUnitPrice(batchId);
+    }
+
+    /**
+     * 得到计费公式
+     * @param formula
+     * @return
+     */
+    @Override
+    public String selectFormula(BigDecimal formula) {
+        return bmstruckFormulaMapper.selectFormula(formula);
+    }
+
+    /**
+     * 替换途损费公式并进行计算
+     * @param mapList
+     * @return
+     * @throws Exception
+     */
+    public BigDecimal generateWaterFees(List<Map<String,Object>> mapList) throws Exception {
+        // 得到船运途损费计费公式
+        String formula_string = selectFormula(new BigDecimal(6));
+        Integer price = 2000;
+        Integer size = mapList.size();
+        // 替换船运计算公式
+        formula_string = formula_string.replace("单价",price.toString())
+                .replace("船数",size.toString());
+        String s = toSufExpr(formula_string);
+        return calSufExpr(s);
+    }
+
+    /**
+     * 根据主键查询公式和名称
+     * @param formulaId
+     * @return
+     */
+    @Override
+    public Map<String, Object> selectAnyFormula(BigDecimal formulaId) {
+        return bmstruckFormulaMapper.selectAnyFormula(formulaId);
+    }
+
+    /**
+     * 替换途损费公式并进行计算
+     * @param batchId
+     * @return
+     * @throws Exception
+     */
+    public BigDecimal generateLossCost(BigDecimal batchId) throws Exception {
+        // 得到船运途损费计费公式
+        String formula_string = selectFormula(new BigDecimal(5));
+        // 得到单价
+        BigDecimal unitPrice = getUnitPrice(batchId);
+        // 得到计算因子
+        List<Map<String, Object>> calDataList = getCalData(batchId);
+        Map<String,Object> calDataMap = calDataList.get(0);
+        // 比例
+        Double proportion = new Double(0.015);
+        // 得到总装船湿吨
+        BigDecimal shipWeight = (BigDecimal) calDataMap.get("shipWeight");
+        // 得到总装船含水值
+        BigDecimal moistureContent = (BigDecimal) calDataMap.get("moistureContent");
+        // 得到总到厂湿吨
+        BigDecimal arrivalWeight = getArrivalWeight(batchId);
+        // 得到质检次数
+        BigDecimal count = (BigDecimal) calDataMap.get("count");
+        // 得到装船平均水分值
+        Double averageContent = moistureContent.doubleValue()/count.intValue();
+        DecimalFormat df = new DecimalFormat("0.000");
+        String averageMoistureContent = df.format(averageContent.doubleValue());
+        // 到厂含水值
+        Double arrivalContent = new Double(0.091);
+        // 替换船运计算公式
+        formula_string = formula_string.replace("装船湿吨",shipWeight.toString())
+                .replace("比例",proportion.toString())
+                .replace("装船含水值",averageMoistureContent)
+                .replace("到厂湿吨",arrivalWeight.toString())
+                .replace("到厂含水值",arrivalContent.toString())
+                .replace("湿吨单价",unitPrice.toString());
+        String s = toSufExpr(formula_string);
+        return calSufExpr(s);
+    }
+
+    /**
+     * 得到到厂湿吨
+     * @param resultTotalId
+     * @return
+     */
+    @Override
+    public BigDecimal selectArrivalWeight(BigDecimal resultTotalId) {
+        return bmstruckFormulaMapper.selectArrivalWeight(resultTotalId);
+    }
+
+    /**
+     * 根据总实绩id得到批次id
+     * @param resultTotalId
+     * @return
+     */
+    @Override
+    public BigDecimal selectBatchId(BigDecimal resultTotalId) {
+        return bmstruckFormulaMapper.selectBatchId(resultTotalId);
+    }
+
+    /**
+     * 根据批次id得到采购订单id
+     * @param batchId
+     * @return
+     */
+    @Override
+    public BigDecimal selectPurchaseId(BigDecimal batchId) {
+        return bmstruckFormulaMapper.selectPurchaseId(batchId);
+    }
+
+    /**
+     * 查询装船日期
+     * @param batchId
+     * @return
+     */
+    @Override
+    public List<String> selectLoadShipDate(BigDecimal batchId) {
+        List<Map<String, Object>> loadShipDateList = bmstruckFormulaMapper.selectLoadShipDate(batchId);
+        List<String> yearMonthList = new ArrayList<>();
+        for (int i = 0 ; i < loadShipDateList.size();i++) {
+            Map<String,Object> loadShipMap = loadShipDateList.get(i);
+            Date loadShipDate = (Date) loadShipMap.get("loadShipDate");
+            LocalDate localDate = loadShipDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+            Integer year = localDate.getYear();
+            Integer month = localDate.getMonthValue();
+            // 得到装货日期的年月
+            String yearAndMonth = year.toString() + month.toString();
+            // 去重
+            if (!yearMonthList.contains(yearAndMonth)){
+                yearMonthList.add(yearAndMonth);
+            }
+        }
+        return yearMonthList;
+    }
+
+    /**
+     * 得到价格日期和当月价格
+     * @return
+     */
+    @Override
+    public List<Double> selectPriceValue(BigDecimal batchId) {
+        // 得到年月
+        List<String> yearMonthList = selectLoadShipDate(batchId);
+        List<Map<String, Object>> priceDateList = bmstruckFormulaMapper.selectPriceDate();
+        List<Double> priceValueList = new ArrayList<>();
+        for (int i = 0;i < priceDateList.size();i++){
+            Map<String,Object> priceDateMap = priceDateList.get(i);
+            Date priceDate = (Date) priceDateMap.get("priceDate");
+            LocalDate localDate = priceDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+            Integer year = localDate.getYear();
+            Integer month = localDate.getMonthValue();
+            // 得到价格日期的年月
+            String yearAndMonth = year.toString() + month.toString();
+            // 将能与装货年月匹配上的价格存入到list集合
+            if (yearMonthList.contains(yearAndMonth)) {
+                BigDecimal priceValue = (BigDecimal) priceDateMap.get("priceValue");
+                priceValueList.add(priceValue.doubleValue());
+            }
+        }
+        return priceValueList;
+    }
+
+    /**
+     * 得到跨月装船比例
+     * @param batchId
+     * @return
+     */
+    @Override
+    public List<Double> selectShipMentRatio(BigDecimal batchId) {
+        List<String> yearMonthList = selectLoadShipDate(batchId);
+        List<Double> shipMentRatioList = new ArrayList<>();
+        // 遍历装船比例,将每个月的装船比例进行累加
+        List<Map<String, Object>> loadShipDateList = bmstruckFormulaMapper.selectLoadShipDate(batchId);
+        for (int f = 0;f < yearMonthList.size();f++) {
+            Double shipmentRatio = new Double(0);
+            for (int i = 0;i< loadShipDateList.size();i++) {
+                Map<String, Object> ratioMap = loadShipDateList.get(i);
+                Date loadShipDate = (Date) ratioMap.get("loadShipDate");
+                BigDecimal resultShipmentRatio = (BigDecimal) ratioMap.get("resultShipmentRatio");
+                LocalDate localDate = loadShipDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+                Integer year = localDate.getYear();
+                Integer month = localDate.getMonthValue();
+                String yearAndMonth = year.toString() + month.toString();
+                // 判断日期与那个月相匹配,将相匹配的月份装船比例进行累加
+                if (yearAndMonth.equals(yearMonthList.get(f))) {
+                    shipmentRatio += resultShipmentRatio.doubleValue();
+                }
+            }
+            shipMentRatioList.add(shipmentRatio);
+        }
+        return shipMentRatioList;
+    }
+
+    /**
+     * 得到不跨月的月装船比例
+     * @param
+     * @return
+     */
+    public Double selectShipMentRatio() {
+        return new Double(1);
+    }
+
+    /**
+     * 得到一个批次下的水分质检费
+     * @param batchId
+     * @return
+     */
+    @Override
+    public Double selectWaterFees(BigDecimal batchId) {
+        return bmstruckFormulaMapper.selectWaterFees(batchId);
+    }
+
+
+    /**
+     * 替换船运计费公式并进行计算
+     * @param resultId
+     * @return
+     * @throws Exception
+     */
+    public BigDecimal generateDetailedOrder(BigDecimal resultId) throws Exception {
+        // 得到总实绩id
+        BigDecimal resultTotalId = selectTotalId(resultId);
+        // 得到船运计费公式
+        String formula_string = selectFormula(new BigDecimal(4));
+        // 得到批次id
+        BigDecimal batchId = selectBatchId(resultTotalId);
+        // 得到月价格
+        List<Double> priceValueList = selectPriceValue(batchId);
+        // 得到月装船比例
+        List<Double> shipmentRatio = selectShipMentRatio(batchId);
+        // 得到到厂湿吨
+        BigDecimal resultNetWeight = selectArrivalWeight(resultTotalId);
+        Double arrivalWeight = resultNetWeight.doubleValue();
+        // 第一个月装船比例
+        Double resultShipmentRatio1 = new Double(0);
+        // 第二个月装船比例
+        Double resultShipmentRatio2 = new Double(0);
+        // 第三个月装船比例
+        Double resultShipmentRatio3 = new Double(0);
+        // 第四个月装船比例
+        Double resultShipmentRatio4 = new Double(0);
+        // 第一个月价格
+        Double priceValue1 = new Double(0);
+        // 第二个月价格
+        Double priceValue2 = new Double(0);
+        // 第三个月价格
+        Double priceValue3 = new Double(0);
+        // 第四个月价格
+        Double priceValue4 = new Double(0);
+        // 判断装船月份值
+        Integer size = priceValueList.size();
+        if (size == 1) {
+            // 不跨月时
+            // 得到上月月装船比例
+            resultShipmentRatio1 += selectShipMentRatio();
+            // 得到上月月价格
+            priceValue1 += priceValueList.get(0);
+        }
+        if (size == 2) {
+            // 装两个月时
+            // 得到第一个月装船比例
+            resultShipmentRatio1 += shipmentRatio.get(0);
+            // 得到第二个月装船比例
+            resultShipmentRatio2 += shipmentRatio.get(1);
+            // 得到第一个月价格
+            priceValue1 += priceValueList.get(0);
+            // 得到第二个月价格
+            priceValue2 += priceValueList.get(1);
+        }
+        if (size == 3) {
+            // 装三个月时
+            // 得到第一个月装船比例
+            resultShipmentRatio1 += shipmentRatio.get(0);
+            // 得到第二个月装船比例
+            resultShipmentRatio2 += shipmentRatio.get(1);
+            // 得到第三个月装船比例
+            resultShipmentRatio3 += shipmentRatio.get(2);
+            // 得到第一个月价格
+            priceValue1 += priceValueList.get(0);
+            // 得到第二个月价格
+            priceValue2 += priceValueList.get(1);
+            // 得到第三个月价格
+            priceValue3 += priceValueList.get(2);
+        }
+        if (size == 4) {
+            // 装三个月时
+            // 得到第一个月装船比例
+            resultShipmentRatio1 += shipmentRatio.get(0);
+            // 得到第二个月装船比例
+            resultShipmentRatio2 += shipmentRatio.get(1);
+            // 得到第三个月装船比例
+            resultShipmentRatio3 += shipmentRatio.get(2);
+            // 得到第四个月装船比例
+            resultShipmentRatio4 += shipmentRatio.get(3);
+            // 得到第一个月价格
+            priceValue1 += priceValueList.get(0);
+            // 得到第二个月价格
+            priceValue2 += priceValueList.get(1);
+            // 得到第三个月价格
+            priceValue3 += priceValueList.get(2);
+            // 得到第四个月价格
+            priceValue4 += priceValueList.get(3);
+        }
+        // 替换船运计算公式
+        formula_string = formula_string.replace("到厂湿吨",arrivalWeight.toString())
+                .replace("第一月装船比例",resultShipmentRatio1.toString())
+                .replace("第一月价格",priceValue1.toString())
+                .replace("第二月装船比例",resultShipmentRatio2.toString())
+                .replace("第二月价格",priceValue2.toString())
+                .replace("第三月装船比例",resultShipmentRatio3.toString())
+                .replace("第三月价格",priceValue3.toString())
+                .replace("第四月装船比例",resultShipmentRatio4.toString())
+                .replace("第四月价格",priceValue4.toString());
+        String s = toSufExpr(formula_string);
+        return calSufExpr(s);
+    }
+
+    /**
+     * 中缀转换后缀表达式
+     */
+    public  String toSufExpr(String s) {
+        StringBuffer sufExpr = new StringBuffer();
+        Stack<String> stack = new Stack<>();
+        //压入空方便判断
+        stack.push(null);
+        Pattern pattern = Pattern.compile("\\(int\\)|(?<!\\d|[)])-?\\d+(\\.\\d+)?|!=|>=|<=|==|[+\\-*/%()><=|]");
+        Matcher matcher = pattern.matcher(s);
+        while (matcher.find()) {
+            String group = matcher.group();
+            if (group.matches("!=|>=|<=|==|[+\\-*/%()><=|]|\\(int\\)")) {//是运算符
+                if (group.equals("(")) {//之间压栈
+                    stack.push(group);
+                } else if (group.equals(")")) {//等于右括号,一直弹栈,直到遇到左括号
+                    String pop = null;
+                    while (!(pop = stack.pop()).equals("(")) {//遍历循环至左括号
+                        sufExpr.append(pop + " ");
+                    }
+                } else {//是运算符:加减乘除强转,根据优先级压栈
+                    while (getPriority(group) <= getPriority(stack.peek())) {
+                        String pop = stack.pop();
+                        System.out.println(pop);
+                        System.out.println(sufExpr);
+                        if(pop!=null&&!pop.equals("|")){
+                            sufExpr.append(pop + " ");
+                        }
+                    }
+                    stack.push(group);
+                }
+            } else {//是数字
+                sufExpr.append(group + " ");
+            }
+        }
+        String pop = null;
+        while (null != (pop = stack.pop())) {
+            sufExpr.append(pop + " ");
+        }
+        return sufExpr.toString();
+    }
+
+    /**
+     * 设置出栈优先级,(:优先级最低,表示只有遇到)才能出栈
+     * 当栈顶遇到优先级比自己小或等于的弹栈
+     */
+    public  Integer getPriority(String c) {
+        if (c == null) {
+            return 0;
+        }
+        switch (c) {
+            case "(":
+                return 1;
+            case "+":
+            case "-":
+                return 2;
+            case "*":
+            case "/":
+            case "%":
+                return 3;
+            case ">":
+            case "<":
+            case ">=":
+            case "<=":
+            case "!=":
+            case "==":
+                return 4;
+            case "|":
+                return 5;
+            case "=":
+                return 6;
+            case "(int)":
+                return 7;
+        }
+        return 0;
+    }
+
+    /**
+     * 计算值
+     */
+    public  BigDecimal cal(BigDecimal a1, BigDecimal a2, String operator) throws Exception {
+        switch (operator){
+            case "+":return a1.add(a2);
+            case "-":return a1.subtract(a2);
+            case "*":return a1.multiply(a2);
+            case "/":return a1.divide(a2,3,BigDecimal.ROUND_CEILING);
+            case "%":return a1.divideAndRemainder(a2)[1];
+            default:
+                break;
+        }
+        throw new Exception("非法运算符");
+    }
+
+    public  Boolean calBoolean(BigDecimal a1, BigDecimal a2, String operator) throws Exception {
+        switch (operator){
+            case ">":return a1.compareTo(a2) == 1;
+            case "<":return a1.compareTo(a2) == -1;
+            case ">=":return a1.compareTo(a2) > -1;
+            case "<=":return a1.compareTo(a2) < 1;
+            case "!=":return a1.compareTo(a2) != 0;
+            case "==":return a1.compareTo(a2) == 0;
+            default:
+                break;
+        }
+        throw new Exception("非法运算符");
+    }
+
+    /**
+     * 计算后缀表达式
+     */
+    public  BigDecimal calSufExpr(String sufExpr) throws Exception {
+        Stack<BigDecimal> stack = new Stack<>();
+        Pattern pattern=Pattern.compile("\\(int\\)|-?\\d+(\\.\\d+)?|!=|>=|<=|==|[+\\-*/%><=]");//提取运算符和数字
+        Matcher matcher = pattern.matcher(sufExpr);
+        BigDecimal result=new BigDecimal("0.0");
+        while (matcher.find()){
+            String group = matcher.group();
+            if(group.matches("[+\\-*/%]")){
+                BigDecimal a1 =stack.pop();
+                BigDecimal a2 =stack.pop();
+                result = cal(a2, a1, group);
+                stack.push(result);
+            }
+            else if(group.equals("(int)")){
+                BigDecimal pop = stack.pop();
+                BigDecimal bigDecimal = pop.setScale(0, BigDecimal.ROUND_DOWN);
+                stack.push(bigDecimal);
+            }
+            else if(group.matches("!=|>=|<=|==|[><]")){
+                BigDecimal a1 =stack.pop();
+                BigDecimal a2 =stack.pop();
+                stack.push(calBoolean(a2,a1,group)?new BigDecimal(1):new BigDecimal(0));
+            }
+            else if(group.equals("=")){
+                BigDecimal a1 =stack.pop();
+                BigDecimal a2 =stack.pop();
+                if (a2.compareTo(new BigDecimal(1))==0) {
+                    stack.push(a1);
+                }
+            }
+            else {//为数字直接压栈
+                stack.push(new BigDecimal(group));
+            }
+        }
+        return result;
+    }
+
+}

+ 70 - 0
src/main/java/com/steerinfo/dil/util/BaseRESTfulController.java

@@ -0,0 +1,70 @@
+package com.steerinfo.dil.util;
+
+import com.steerinfo.framework.controller.BaseController;
+import com.steerinfo.framework.controller.RESTfulResult;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/7/8 11:33
+ * @Version 1.0
+ */
+public class BaseRESTfulController extends BaseController {
+    public BaseRESTfulController() {
+    }
+
+    protected RESTfulResult success() {
+        RESTfulResult result = new RESTfulResult();
+        result.setSucceed();
+        result.setMessage(result.getResultMessage());
+        result.setData(true);
+        result.setCode("200");
+        return result;
+    }
+
+    protected RESTfulResult success(Object obj) {
+        RESTfulResult result = new RESTfulResult();
+        result.setSucceed();
+        result.setMessage(result.getResultMessage());
+        result.setData(obj);
+        result.setCode("200");
+        return result;
+    }
+
+    protected RESTfulResult success(Object obj, String msg) {
+        RESTfulResult result = this.success(obj);
+        result.setMessage(msg);
+        result.setCode("200");
+        return result;
+    }
+
+    protected RESTfulResult success(Object obj, String code, String msg) {
+        RESTfulResult result = this.success(obj, msg);
+        result.setCode(code);
+        result.setCode("200");
+        return result;
+    }
+
+    protected RESTfulResult failed() {
+        return this.failed((Object)null);
+    }
+
+    protected RESTfulResult failed(Object obj) {
+        RESTfulResult result = new RESTfulResult("201", (String)null);
+        result.setMessage(result.getResultMessage());
+        result.setData(obj);
+        return result;
+    }
+
+    protected RESTfulResult failed(Object obj, String msg) {
+        RESTfulResult result = new RESTfulResult("201", msg);
+        result.setData(obj);
+        return result;
+    }
+
+    protected RESTfulResult failed(Object obj, String code, String msg) {
+        RESTfulResult result = this.failed(obj, msg);
+        result = new RESTfulResult("201", msg);
+        result.setCode(code);
+        return result;
+    }
+}

+ 38 - 0
src/main/java/com/steerinfo/dil/util/ColumnDataUtil.java

@@ -0,0 +1,38 @@
+package com.steerinfo.dil.util;
+
+import com.steerinfo.dil.feign.ColumnDataFeign;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+
+@Component
+public class ColumnDataUtil {
+    @Autowired
+    ColumnDataFeign columnDataFeign;
+
+    private Set<Map<String, Object>> setListMap(List<Map<String, Object>> list, String name) {
+        Set<Map<String, Object>> setString = new HashSet<>();
+        for (Map<String, Object> map : list) {//遍历每条数据
+            Map<String, Object> map1 = new HashMap<>();
+            //map.get(name)获取每条数据中对应表头字段的数据
+            map1.put("text", map.get(name));
+            if (map.get(name) != null) {
+                map1.put("value", map.get(name));
+                setString.add(map1);
+            }
+        }
+        return setString;
+    }
+
+    public PageListAdd tableColumnData(Integer apiId, List<Map<String, Object>> list, List<Map<String,Object>> data) {
+        List<Map<String, Object>> columnDataList = columnDataFeign.getColumnData(apiId);
+        for (Map<String, Object> columnData : columnDataList) {
+            //每个表头字段的过滤条件
+            columnData.put("filters", setListMap(list, columnData.get("prop").toString()));
+        }
+        PageListAdd pageList = new PageListAdd(data);
+        pageList.setColumnData(columnDataList);
+        return pageList;
+    }
+}

+ 43 - 0
src/main/java/com/steerinfo/dil/util/NoUtil.java

@@ -0,0 +1,43 @@
+package com.steerinfo.dil.util;
+
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/8 15:29
+ * @Version:V2.0
+ */
+@Component
+public class NoUtil {
+
+    public String setResultNo(String noStr,BigDecimal resultId) {
+        LocalDate now = LocalDate.now();
+        String resultNo = noStr +  now.getYear();
+        Integer month = now.getMonthValue();
+        String monthStr = month.toString();
+        if (monthStr.length() != 2) {
+            resultNo = resultNo + "0" + now.getMonthValue();
+        }
+        else {
+            resultNo = resultNo + now.getMonthValue();
+        }
+        resultNo = resultNo + now.getDayOfMonth();
+        switch ((resultId.toString()).length()) {
+            case 1:
+                resultNo = resultNo + "000" + resultId;
+                break;
+            case 2:
+                resultNo = resultNo + "00" + resultId;
+                break;
+            case 3:
+                resultNo = resultNo + "0" + resultId;
+                break;
+            default:resultNo = resultNo + resultId;
+        }
+        return resultNo;
+    }
+}

+ 33 - 0
src/main/java/com/steerinfo/dil/util/PageListAdd.java

@@ -0,0 +1,33 @@
+package com.steerinfo.dil.util;
+
+import com.steerinfo.framework.service.pagehelper.PageList;
+
+import java.util.List;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/6/7 14:31
+ * @Version 1.0
+ */
+public class PageListAdd<T> extends PageList<T> {
+    public PageListAdd() {
+    }
+
+    public PageListAdd(List<T> list) {
+        super(list, 20);
+    }
+
+    public PageListAdd(List<T> list, int navigatePages) {
+        super(list, navigatePages);
+    }
+
+    private Object columnData;
+
+    public Object getColumnData() {
+        return columnData;
+    }
+
+    public void setColumnData(Object columnData) {
+        this.columnData = columnData;
+    }
+}

+ 11 - 0
src/main/java/com/steerinfo/dil/util/util.java

@@ -0,0 +1,11 @@
+package com.steerinfo.dil.util;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/5/26 8:59
+ * @Version 1.0
+ * 工具类
+ */
+public class util {
+
+}

+ 9 - 0
src/main/resources/application-dev.yml

@@ -0,0 +1,9 @@
+spring:
+  datasource:
+    url: jdbc:oracle:thin:@192.168.1.51:1521:steerinfo
+    password: st#0901
+    username: DIL0901
+    driver-class-name: oracle.jdbc.OracleDriver
+  application:
+    name: [name]
+

+ 8 - 0
src/main/resources/application-prod.yml

@@ -0,0 +1,8 @@
+spring:
+  datasource:
+    url: jdbc:oracle:thin:@192.168.1.51:1521:steerinfo
+    password: st#0901
+    username: DIL0901
+    driver-class-name: oracle.jdbc.OracleDriver
+  application:
+    name: [name]

+ 0 - 0
src/main/resources/application.yml


+ 50 - 0
src/main/resources/bootstrap.yml

@@ -0,0 +1,50 @@
+api.version: api/v1/bmsship
+spring:
+  profiles:
+    include: ${SPRING_PROFILES:dev}
+  jackson:
+      date-format: yyyy-MM-dd HH:mm:ss
+      time-zone: GMT+8
+#    serialization: {WRITE_DATES_AS_TIMESTAMPS: true}
+  messages:
+    basename: message
+    encoding: UTF-8
+  mvc:
+    static-path-pattern:
+
+#eureka设置
+eureka:
+  client:
+    service-url:
+      defaultZone: http://root:root@discovery.steerinfo.com/eureka/
+
+genxml:
+  pth: com/a
+cache:
+  level: 2
+redis:
+  host: 10.10.50.28
+  port: 6379
+  pwd: 123456
+  project:
+    prefix: sysmanage
+  pool:
+    maxTotal: 8
+    maxWaitMillis: 1000
+    maxIdle: 8
+  cache:
+    time: 864000000
+  database: 0
+
+
+
+mybatis:
+  type-aliases-package: com.steerinfo.dil.model
+  mapper-locations: classpath:com/steerinfo/dil/mapper/*.xml
+  configuration:
+    #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    mapUnderscoreToCamelCase: true
+    call-setters-on-nulls: true
+
+server:
+  port: 8078

+ 654 - 0
src/main/resources/com/steerinfo/dil/mapper/BmsshipDetailsOrderMapper.xml

@@ -0,0 +1,654 @@
+<?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.steerinfo.dil.mapper.BmsshipDetailsOrderMapper">
+    <resultMap id="BaseResultMap" type="com.steerinfo.dil.model.BmsshipDetailsOrder">
+        <id column="DETAILS_ID" jdbcType="DECIMAL" property="detailsId" />
+        <result column="PURCHASE_ORDER_ID" jdbcType="DECIMAL" property="purchaseOrderId" />
+        <result column="DETAILS_NO" jdbcType="VARCHAR" property="detailsNo" />
+        <result column="DETAILS_TIME" jdbcType="TIMESTAMP" property="detailsTime" />
+        <result column="DETAILS_FEE_TYPE" jdbcType="VARCHAR" property="detailsFeeType" />
+        <result column="DETAILS_AMOUNT" jdbcType="DECIMAL" property="detailsAmount" />
+        <result column="WETHER_TO_STATEMENT" jdbcType="DECIMAL" property="wetherToStatement" />
+        <result column="TRUCK_RESULT_TOTAL_ID" jdbcType="DECIMAL" property="truckResultTotalId" />
+        <result column="INSERT_USERNAME" jdbcType="VARCHAR" property="insertUsername" />
+        <result column="INSERT_TIME" jdbcType="TIMESTAMP" property="insertTime" />
+        <result column="UPDATE_USERNAME" jdbcType="VARCHAR" property="updateUsername" />
+        <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
+        <result column="INSERT_UPDATE_REMARK" jdbcType="VARCHAR" property="insertUpdateRemark" />
+    </resultMap>
+    <sql id="columns">
+    DETAILS_ID, PURCHASE_ORDER_ID, DETAILS_NO, DETAILS_TIME, DETAILS_FEE_TYPE, DETAILS_AMOUNT,
+    WETHER_TO_STATEMENT, TRUCK_RESULT_TOTAL_ID, INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME,
+    UPDATE_TIME, INSERT_UPDATE_REMARK
+  </sql>
+    <sql id="columns_alias">
+    t.DETAILS_ID, t.PURCHASE_ORDER_ID, t.DETAILS_NO, t.DETAILS_TIME, t.DETAILS_FEE_TYPE,
+    t.DETAILS_AMOUNT, t.WETHER_TO_STATEMENT, t.TRUCK_RESULT_TOTAL_ID, t.INSERT_USERNAME,
+    t.INSERT_TIME, t.UPDATE_USERNAME, t.UPDATE_TIME, t.INSERT_UPDATE_REMARK
+  </sql>
+    <sql id="select">
+        SELECT <include refid="columns"/> FROM BMSSHIP_DETAILS_ORDER
+    </sql>
+    <sql id="select_alias">
+        SELECT <include refid="columns_alias"/> FROM BMSSHIP_DETAILS_ORDER t
+    </sql>
+    <sql id="where">
+        <where>
+            <if test="detailsId != null">
+                and DETAILS_ID = #{detailsId}
+            </if>
+            <if test="purchaseOrderId != null">
+                and PURCHASE_ORDER_ID = #{purchaseOrderId}
+            </if>
+            <if test="detailsNo != null and detailsNo != ''">
+                and DETAILS_NO = #{detailsNo}
+            </if>
+            <if test="detailsTime != null">
+                and TO_CHAR(DETAILS_TIME,'yyyy-MM-dd') = #{detailsTime}
+            </if>
+            <if test="detailsFeeType != null and detailsFeeType != ''">
+                and DETAILS_FEE_TYPE = #{detailsFeeType}
+            </if>
+            <if test="detailsAmount != null">
+                and DETAILS_AMOUNT = #{detailsAmount}
+            </if>
+            <if test="wetherToStatement != null">
+                and WETHER_TO_STATEMENT = #{wetherToStatement}
+            </if>
+            <if test="truckResultTotalId != null">
+                and TRUCK_RESULT_TOTAL_ID = #{truckResultTotalId}
+            </if>
+            <if test="insertUsername != null and insertUsername != ''">
+                and INSERT_USERNAME = #{insertUsername}
+            </if>
+            <if test="insertTime != null">
+                and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+            </if>
+            <if test="updateUsername != null and updateUsername != ''">
+                and UPDATE_USERNAME = #{updateUsername}
+            </if>
+            <if test="updateTime != null">
+                and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+            </if>
+            <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+                and INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+            </if>
+        </where>
+    </sql>
+    <sql id="whereLike">
+        <where>
+            <if test="detailsId != null">
+                and DETAILS_ID = #{detailsId}
+            </if>
+            <if test="purchaseOrderId != null">
+                and PURCHASE_ORDER_ID = #{purchaseOrderId}
+            </if>
+            <if test="detailsNo != null and detailsNo != ''">
+                and DETAILS_NO LIKE '%${detailsNo}%'
+            </if>
+            <if test="detailsTime != null">
+                and TO_CHAR(DETAILS_TIME,'yyyy-MM-dd') = #{detailsTime}
+            </if>
+            <if test="detailsFeeType != null and detailsFeeType != ''">
+                and DETAILS_FEE_TYPE LIKE '%${detailsFeeType}%'
+            </if>
+            <if test="detailsAmount != null">
+                and DETAILS_AMOUNT = #{detailsAmount}
+            </if>
+            <if test="wetherToStatement != null">
+                and WETHER_TO_STATEMENT = #{wetherToStatement}
+            </if>
+            <if test="truckResultTotalId != null">
+                and TRUCK_RESULT_TOTAL_ID = #{truckResultTotalId}
+            </if>
+            <if test="insertUsername != null and insertUsername != ''">
+                and INSERT_USERNAME LIKE '%${insertUsername}%'
+            </if>
+            <if test="insertTime != null">
+                and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+            </if>
+            <if test="updateUsername != null and updateUsername != ''">
+                and UPDATE_USERNAME LIKE '%${updateUsername}%'
+            </if>
+            <if test="updateTime != null">
+                and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+            </if>
+            <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+                and INSERT_UPDATE_REMARK LIKE '%${insertUpdateRemark}%'
+            </if>
+        </where>
+    </sql>
+    <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
+    delete from BMSSHIP_DETAILS_ORDER
+    where DETAILS_ID = #{detailsId,jdbcType=DECIMAL}
+  </delete>
+    <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
+        delete from BMSSHIP_DETAILS_ORDER
+        where 1!=1
+        <if test="purchaseOrderId != null">
+            or PURCHASE_ORDER_ID = #{purchaseOrderId}
+        </if>
+        <if test="detailsNo != null and detailsNo != ''">
+            or DETAILS_NO = #{detailsNo}
+        </if>
+        <if test="detailsTime != null">
+            or TO_CHAR(DETAILS_TIME,'yyyy-MM-dd') = '#{detailsTime}'
+        </if>
+        <if test="detailsFeeType != null and detailsFeeType != ''">
+            or DETAILS_FEE_TYPE = #{detailsFeeType}
+        </if>
+        <if test="detailsAmount != null">
+            or DETAILS_AMOUNT = #{detailsAmount}
+        </if>
+        <if test="wetherToStatement != null">
+            or WETHER_TO_STATEMENT = #{wetherToStatement}
+        </if>
+        <if test="truckResultTotalId != null">
+            or TRUCK_RESULT_TOTAL_ID = #{truckResultTotalId}
+        </if>
+        <if test="insertUsername != null and insertUsername != ''">
+            or INSERT_USERNAME = #{insertUsername}
+        </if>
+        <if test="insertTime != null">
+            or TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = '#{insertTime}'
+        </if>
+        <if test="updateUsername != null and updateUsername != ''">
+            or UPDATE_USERNAME = #{updateUsername}
+        </if>
+        <if test="updateTime != null">
+            or TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = '#{updateTime}'
+        </if>
+        <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+            or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+        </if>
+    </delete>
+    <insert id="insert" parameterType="com.steerinfo.dil.model.BmsshipDetailsOrder">
+    insert into BMSSHIP_DETAILS_ORDER (DETAILS_ID, PURCHASE_ORDER_ID, DETAILS_NO,
+      DETAILS_TIME, DETAILS_FEE_TYPE, DETAILS_AMOUNT,
+      WETHER_TO_STATEMENT, TRUCK_RESULT_TOTAL_ID,
+      INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME,
+      UPDATE_TIME, INSERT_UPDATE_REMARK)
+    values (#{detailsId,jdbcType=DECIMAL}, #{purchaseOrderId,jdbcType=DECIMAL}, #{detailsNo,jdbcType=VARCHAR},
+      #{detailsTime,jdbcType=TIMESTAMP}, #{detailsFeeType,jdbcType=VARCHAR}, #{detailsAmount,jdbcType=DECIMAL},
+      #{wetherToStatement,jdbcType=DECIMAL}, #{truckResultTotalId,jdbcType=DECIMAL},
+      #{insertUsername,jdbcType=VARCHAR}, #{insertTime,jdbcType=TIMESTAMP}, #{updateUsername,jdbcType=VARCHAR},
+      #{updateTime,jdbcType=TIMESTAMP}, #{insertUpdateRemark,jdbcType=VARCHAR})
+  </insert>
+    <insert id="insertSelective" parameterType="com.steerinfo.dil.model.BmsshipDetailsOrder">
+        insert into BMSSHIP_DETAILS_ORDER
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="detailsId != null">
+                DETAILS_ID,
+            </if>
+            <if test="purchaseOrderId != null">
+                PURCHASE_ORDER_ID,
+            </if>
+            <if test="detailsNo != null">
+                DETAILS_NO,
+            </if>
+            <if test="detailsTime != null">
+                DETAILS_TIME,
+            </if>
+            <if test="detailsFeeType != null">
+                DETAILS_FEE_TYPE,
+            </if>
+            <if test="detailsAmount != null">
+                DETAILS_AMOUNT,
+            </if>
+            <if test="wetherToStatement != null">
+                WETHER_TO_STATEMENT,
+            </if>
+            <if test="truckResultTotalId != null">
+                TRUCK_RESULT_TOTAL_ID,
+            </if>
+            <if test="insertUsername != null">
+                INSERT_USERNAME,
+            </if>
+            <if test="insertTime != null">
+                INSERT_TIME,
+            </if>
+            <if test="updateUsername != null">
+                UPDATE_USERNAME,
+            </if>
+            <if test="updateTime != null">
+                UPDATE_TIME,
+            </if>
+            <if test="insertUpdateRemark != null">
+                INSERT_UPDATE_REMARK,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="detailsId != null">
+                #{detailsId,jdbcType=DECIMAL},
+            </if>
+            <if test="purchaseOrderId != null">
+                #{purchaseOrderId,jdbcType=DECIMAL},
+            </if>
+            <if test="detailsNo != null">
+                #{detailsNo,jdbcType=VARCHAR},
+            </if>
+            <if test="detailsTime != null">
+                #{detailsTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="detailsFeeType != null">
+                #{detailsFeeType,jdbcType=VARCHAR},
+            </if>
+            <if test="detailsAmount != null">
+                #{detailsAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="wetherToStatement != null">
+                #{wetherToStatement,jdbcType=DECIMAL},
+            </if>
+            <if test="truckResultTotalId != null">
+                #{truckResultTotalId,jdbcType=DECIMAL},
+            </if>
+            <if test="insertUsername != null">
+                #{insertUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="insertTime != null">
+                #{insertTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUsername != null">
+                #{updateUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUpdateRemark != null">
+                #{insertUpdateRemark,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKey" parameterType="com.steerinfo.dil.model.BmsshipDetailsOrder">
+    update BMSSHIP_DETAILS_ORDER
+    set PURCHASE_ORDER_ID = #{purchaseOrderId,jdbcType=DECIMAL},
+      DETAILS_NO = #{detailsNo,jdbcType=VARCHAR},
+      DETAILS_TIME = #{detailsTime,jdbcType=TIMESTAMP},
+      DETAILS_FEE_TYPE = #{detailsFeeType,jdbcType=VARCHAR},
+      DETAILS_AMOUNT = #{detailsAmount,jdbcType=DECIMAL},
+      WETHER_TO_STATEMENT = #{wetherToStatement,jdbcType=DECIMAL},
+      TRUCK_RESULT_TOTAL_ID = #{truckResultTotalId,jdbcType=DECIMAL},
+      INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+      INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+      UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+      UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+      INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR}
+    where DETAILS_ID = #{detailsId,jdbcType=DECIMAL}
+  </update>
+    <update id="updateByPrimaryKeySelective" parameterType="com.steerinfo.dil.model.BmsshipDetailsOrder">
+        update BMSSHIP_DETAILS_ORDER
+        <set>
+            <if test="purchaseOrderId != null">
+                PURCHASE_ORDER_ID = #{purchaseOrderId,jdbcType=DECIMAL},
+            </if>
+            <if test="detailsNo != null">
+                DETAILS_NO = #{detailsNo,jdbcType=VARCHAR},
+            </if>
+            <if test="detailsTime != null">
+                DETAILS_TIME = #{detailsTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="detailsFeeType != null">
+                DETAILS_FEE_TYPE = #{detailsFeeType,jdbcType=VARCHAR},
+            </if>
+            <if test="detailsAmount != null">
+                DETAILS_AMOUNT = #{detailsAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="wetherToStatement != null">
+                WETHER_TO_STATEMENT = #{wetherToStatement,jdbcType=DECIMAL},
+            </if>
+            <if test="truckResultTotalId != null">
+                TRUCK_RESULT_TOTAL_ID = #{truckResultTotalId,jdbcType=DECIMAL},
+            </if>
+            <if test="insertUsername != null">
+                INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="insertTime != null">
+                INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUsername != null">
+                UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUpdateRemark != null">
+                INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where DETAILS_ID = #{detailsId,jdbcType=DECIMAL}
+    </update>
+    <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
+        <include refid="select"/>
+        where DETAILS_ID = #{detailsId,jdbcType=DECIMAL}
+    </select>
+    <select id="selectByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        <include refid="select"/>
+        <include refid="where"/>
+    </select>
+    <select id="selectLikeByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        <include refid="select"/>
+        <include refid="whereLike"/>
+    </select>
+    <insert id="batchInsert" parameterType="java.util.List">
+        insert into BMSSHIP_DETAILS_ORDER
+        (DETAILS_ID,
+        PURCHASE_ORDER_ID, DETAILS_NO, DETAILS_TIME,
+        DETAILS_FEE_TYPE, DETAILS_AMOUNT,
+        WETHER_TO_STATEMENT, TRUCK_RESULT_TOTAL_ID,
+        INSERT_USERNAME, INSERT_TIME,
+        UPDATE_USERNAME, UPDATE_TIME,
+        INSERT_UPDATE_REMARK)
+        ( <foreach collection="list" item="item" separator="union all">
+        select
+        #{item.detailsId,jdbcType=DECIMAL},
+        #{item.purchaseOrderId,jdbcType=DECIMAL}, #{item.detailsNo,jdbcType=VARCHAR}, #{item.detailsTime,jdbcType=TIMESTAMP},
+        #{item.detailsFeeType,jdbcType=VARCHAR}, #{item.detailsAmount,jdbcType=DECIMAL},
+        #{item.wetherToStatement,jdbcType=DECIMAL}, #{item.truckResultTotalId,jdbcType=DECIMAL},
+        #{item.insertUsername,jdbcType=VARCHAR}, #{item.insertTime,jdbcType=TIMESTAMP},
+        #{item.updateUsername,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP},
+        #{item.insertUpdateRemark,jdbcType=VARCHAR} from dual
+    </foreach> )
+    </insert>
+    <update id="batchUpdate" parameterType="java.util.List">
+        update BMSSHIP_DETAILS_ORDER
+        set
+        DETAILS_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.detailsId,jdbcType=DECIMAL}
+        </foreach>
+        ,PURCHASE_ORDER_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.purchaseOrderId,jdbcType=DECIMAL}
+        </foreach>
+        ,DETAILS_NO=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.detailsNo,jdbcType=VARCHAR}
+        </foreach>
+        ,DETAILS_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.detailsTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,DETAILS_FEE_TYPE=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.detailsFeeType,jdbcType=VARCHAR}
+        </foreach>
+        ,DETAILS_AMOUNT=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.detailsAmount,jdbcType=DECIMAL}
+        </foreach>
+        ,WETHER_TO_STATEMENT=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.wetherToStatement,jdbcType=DECIMAL}
+        </foreach>
+        ,TRUCK_RESULT_TOTAL_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.truckResultTotalId,jdbcType=DECIMAL}
+        </foreach>
+        ,INSERT_USERNAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
+        </foreach>
+        ,INSERT_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,UPDATE_USERNAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
+        </foreach>
+        ,UPDATE_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,INSERT_UPDATE_REMARK=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
+        </foreach>
+        where DETAILS_ID in
+        <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
+            #{item.detailsId,jdbcType=DECIMAL}
+        </foreach>
+    </update>
+    <delete id="batchDelete" parameterType="java.util.List">
+        delete from BMSSHIP_DETAILS_ORDER
+        where DETAILS_ID in
+        <foreach collection="list" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+    <!-- 友情提示!!!-->
+    <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
+
+    <!-- 得到最大id -->
+    <select id="selectMaxId" resultType="DECIMAL">
+        SELECT MAX(DETAILS_ID)+1 FROM BMSSHIP_DETAILS_ORDER
+    </select>
+
+    <sql id="orderBy">
+        <if test="orderField != null and orderField != ''">
+            order by "${orderField}"
+            <if test="orderType != null and orderType != ''">
+                ${orderType}
+            </if>
+        </if>
+        <if test="orderField == null  ">
+            order by "insertTime" desc
+        </if>
+    </sql>
+    <select id="getUncomplateDetailsOrderList" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT * FROM(
+        SELECT DISTINCT
+        bdo.INSERT_TIME as "insertTime",
+        bdo.DETAILS_ID as "detailsId",
+        apo.RECEIVE_UNIT_ID as "statementShipperId",
+        db.BATCH_ID as "batchId",
+        apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+        rm.MATERIAL_NAME as "materialName",
+        db.RESULT_FOREIGN_SHIP_NAME as "resultForeignShipName",
+        bdo.DETAILS_NO as "detailsNo",
+        bdo.DETAILS_TIME as "detailsTime",
+        bdo.DETAILS_FEE_TYPE as "detailsFeeType",
+        srp.PORT_NAME as "startPort",
+        erp.PORT_NAME as "endPort",
+        twr.RESULT_NET_WEIGHT as "resultNetWeight",
+        bdo.DETAILS_AMOUNT as "detailsAmount"
+        FROM BMSSHIP_DETAILS_ORDER bdo
+        LEFT JOIN AMS_PURCHASE_ORDER apo
+        ON apo.PURCHASE_ORDER_ID = bdo.PURCHASE_ORDER_ID
+        LEFT JOIN RMS_SHIPPER rs
+        ON rs.SHIPPER_ID = apo.RECEIVE_UNIT_ID
+        LEFT JOIN DIL_BATCH db
+        ON db.BATCH_ID = apo.BATCH_ID
+        LEFT JOIN RMS_MATERIAL rm
+        ON rm.MATERIAL_ID = db.MATERIAL_ID
+        LEFT JOIN OMSSHIP_SHIPMENT_INSTRUCTIONS osi
+        ON osi.BATCH_ID = db.BATCH_ID
+        LEFT JOIN OMSSHIP_INSTRUCTIONS_CAPACITY oci
+        ON osi.SHIPMENT_INSTRUCTIONS_ID = oci.INSTRUCTIONS_ID
+        LEFT JOIN TMSSHIP_TOTAL_RESULT shiptr
+        ON oci.INSTRUCTIONS_CAPACITY_ID = shiptr.ORDER_ID
+        LEFT JOIN TMSSHIP_LOAD_SHIP_RESULT tlsr
+        ON shiptr.RESULT_ID = tlsr.TOTAL_RESULT_ID
+        LEFT JOIN RMS_PORT srp
+        ON tlsr.LOCATION_START_PORT_ID = srp.PORT_ID
+        LEFT JOIN RMS_PORT erp
+        ON tlsr.ARRIVAL_PORT_ID = erp.PORT_ID
+        LEFT JOIN AMSTRUCK_PURPLAN ap
+        ON ap.BATCH_ID = db.BATCH_ID
+        LEFT JOIN TMSTRUCK_WEIGHT_RESULT twr
+        ON twr.RESULT_TOTAL_ID = bdo.TRUCK_RESULT_TOTAL_ID
+        WHERE bdo.WETHER_TO_STATEMENT = 0
+        )
+        <where>
+            <if test="purchaseOrderNo!= null">
+                and
+                <foreach collection="purchaseOrderNo" item="item" open="(" separator="," close=")">
+                "purchaseOrderNo" in #{item}
+                </foreach>
+            </if>
+            <if test="materialName!= null">
+                and
+                <foreach collection="materialName" item="item" open="(" separator="," close=")">
+                "materialName" in #{item}
+                </foreach>
+            </if>
+            <if test="resultForeignShipName!= null">
+                and
+                <foreach collection="resultForeignShipName" item="item" open="(" separator="," close=")">
+                "resultForeignShipName" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsNo!= null">
+                and
+                <foreach collection="detailsNo" item="item" open="(" separator="," close=")">
+                "detailsNo" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsTime!= null">
+                and
+                <foreach collection="detailsTime" item="item" open="(" separator="," close=")">
+                "detailsTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="detailsFeeType!= null">
+                and
+                <foreach collection="detailsFeeType" item="item" open="(" separator="," close=")">
+                "detailsFeeType" in #{item}
+                </foreach>
+            </if>
+            <if test="startPort!= null">
+                and
+                <foreach collection="startPort" item="item" open="(" separator="," close=")">
+                "startPort" in #{item}
+                </foreach>
+            </if>
+            <if test="endPort!= null">
+                and
+                <foreach collection="endPort" item="item" open="(" separator="," close=")">
+                "endPort" in #{item}
+                </foreach>
+            </if>
+            <if test="resultNetWeight!= null">
+                and
+                <foreach collection="resultNetWeight" item="item" open="(" separator="," close=")">
+                "resultNetWeight" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsAmount!= null">
+                and
+                <foreach collection="detailsAmount" item="item" open="(" separator="," close=")">
+                "detailsAmount" in #{item}
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderBy"></include>
+    </select>
+
+    <select id="getDetailsOrderList" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT * FROM(
+        SELECT DISTINCT
+        bdo.INSERT_TIME as "insertTime",
+        bdo.DETAILS_ID as "detailsId",
+        apo.RECEIVE_UNIT_ID as "statementShipperId",
+        db.BATCH_ID as "batchId",
+        apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+        rm.MATERIAL_NAME as "materialName",
+        db.RESULT_FOREIGN_SHIP_NAME as "resultForeignShipName",
+        bdo.DETAILS_NO as "detailsNo",
+        bdo.DETAILS_TIME as "detailsTime",
+        bdo.DETAILS_FEE_TYPE as "detailsFeeType",
+        srp.PORT_NAME as "startPort",
+        erp.PORT_NAME as "endPort",
+        twr.RESULT_NET_WEIGHT as "resultNetWeight",
+        bdo.DETAILS_AMOUNT as "detailsAmount"
+        FROM BMSSHIP_DETAILS_ORDER bdo
+        LEFT JOIN AMS_PURCHASE_ORDER apo
+        ON apo.PURCHASE_ORDER_ID = bdo.PURCHASE_ORDER_ID
+        LEFT JOIN RMS_SHIPPER rs
+        ON rs.SHIPPER_ID = apo.RECEIVE_UNIT_ID
+        LEFT JOIN DIL_BATCH db
+        ON db.BATCH_ID = apo.BATCH_ID
+        LEFT JOIN RMS_MATERIAL rm
+        ON rm.MATERIAL_ID = db.MATERIAL_ID
+        LEFT JOIN OMSSHIP_SHIPMENT_INSTRUCTIONS osi
+        ON osi.BATCH_ID = db.BATCH_ID
+        LEFT JOIN OMSSHIP_INSTRUCTIONS_CAPACITY oci
+        ON osi.SHIPMENT_INSTRUCTIONS_ID = oci.INSTRUCTIONS_ID
+        LEFT JOIN TMSSHIP_TOTAL_RESULT shiptr
+        ON oci.INSTRUCTIONS_CAPACITY_ID = shiptr.ORDER_ID
+        LEFT JOIN TMSSHIP_LOAD_SHIP_RESULT tlsr
+        ON shiptr.RESULT_ID = tlsr.TOTAL_RESULT_ID
+        LEFT JOIN RMS_PORT srp
+        ON tlsr.LOCATION_START_PORT_ID = srp.PORT_ID
+        LEFT JOIN RMS_PORT erp
+        ON tlsr.ARRIVAL_PORT_ID = erp.PORT_ID
+        LEFT JOIN AMSTRUCK_PURPLAN ap
+        ON ap.BATCH_ID = db.BATCH_ID
+        LEFT JOIN TMSTRUCK_WEIGHT_RESULT twr
+        ON twr.RESULT_TOTAL_ID = bdo.TRUCK_RESULT_TOTAL_ID
+        )
+        <where>
+            <if test="purchaseOrderNo!= null">
+                and
+                <foreach collection="purchaseOrderNo" item="item" open="(" separator="," close=")">
+                    "purchaseOrderNo" in #{item}
+                </foreach>
+            </if>
+            <if test="materialName!= null">
+                and
+                <foreach collection="materialName" item="item" open="(" separator="," close=")">
+                    "materialName" in #{item}
+                </foreach>
+            </if>
+            <if test="resultForeignShipName!= null">
+                and
+                <foreach collection="resultForeignShipName" item="item" open="(" separator="," close=")">
+                    "resultForeignShipName" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsNo!= null">
+                and
+                <foreach collection="detailsNo" item="item" open="(" separator="," close=")">
+                    "detailsNo" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsTime!= null">
+                and
+                <foreach collection="detailsTime" item="item" open="(" separator="," close=")">
+                    "detailsTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="detailsFeeType!= null">
+                and
+                <foreach collection="detailsFeeType" item="item" open="(" separator="," close=")">
+                    "detailsFeeType" in #{item}
+                </foreach>
+            </if>
+            <if test="startPort!= null">
+                and
+                <foreach collection="startPort" item="item" open="(" separator="," close=")">
+                    "startPort" in #{item}
+                </foreach>
+            </if>
+            <if test="endPort!= null">
+                and
+                <foreach collection="endPort" item="item" open="(" separator="," close=")">
+                    "endPort" in #{item}
+                </foreach>
+            </if>
+            <if test="resultNetWeight!= null">
+                and
+                <foreach collection="resultNetWeight" item="item" open="(" separator="," close=")">
+                    "resultNetWeight" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsAmount!= null">
+                and
+                <foreach collection="detailsAmount" item="item" open="(" separator="," close=")">
+                    "detailsAmount" in #{item}
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderBy"></include>
+    </select>
+</mapper>

+ 296 - 0
src/main/resources/com/steerinfo/dil/mapper/BmsshipDetailsStatementMapper.xml

@@ -0,0 +1,296 @@
+<?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.steerinfo.dil.mapper.BmsshipDetailsStatementMapper">
+    <resultMap id="BaseResultMap" type="com.steerinfo.dil.model.BmsshipDetailsStatement">
+        <id column="DETAILS_STATEMENT_ID" jdbcType="DECIMAL" property="detailsStatementId" />
+        <result column="STATEMENT_ID" jdbcType="DECIMAL" property="statementId" />
+        <result column="DETAILS_ID" jdbcType="DECIMAL" property="detailsId" />
+        <result column="INSERT_USERNAME" jdbcType="VARCHAR" property="insertUsername" />
+        <result column="INSERT_TIME" jdbcType="TIMESTAMP" property="insertTime" />
+        <result column="UPDATE_USERNAME" jdbcType="VARCHAR" property="updateUsername" />
+        <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
+        <result column="INSERT_UPDATE_REMARK" jdbcType="VARCHAR" property="insertUpdateRemark" />
+    </resultMap>
+    <sql id="columns">
+    DETAILS_STATEMENT_ID, STATEMENT_ID, DETAILS_ID, INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME,
+    UPDATE_TIME, INSERT_UPDATE_REMARK
+  </sql>
+    <sql id="columns_alias">
+    t.DETAILS_STATEMENT_ID, t.STATEMENT_ID, t.DETAILS_ID, t.INSERT_USERNAME, t.INSERT_TIME,
+    t.UPDATE_USERNAME, t.UPDATE_TIME, t.INSERT_UPDATE_REMARK
+  </sql>
+    <sql id="select">
+        SELECT <include refid="columns"/> FROM BMSSHIP_DETAILS_STATEMENT
+    </sql>
+    <sql id="select_alias">
+        SELECT <include refid="columns_alias"/> FROM BMSSHIP_DETAILS_STATEMENT t
+    </sql>
+    <sql id="where">
+        <where>
+            <if test="detailsStatementId != null">
+                and DETAILS_STATEMENT_ID = #{detailsStatementId}
+            </if>
+            <if test="statementId != null">
+                and STATEMENT_ID = #{statementId}
+            </if>
+            <if test="detailsId != null">
+                and DETAILS_ID = #{detailsId}
+            </if>
+            <if test="insertUsername != null and insertUsername != ''">
+                and INSERT_USERNAME = #{insertUsername}
+            </if>
+            <if test="insertTime != null">
+                and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+            </if>
+            <if test="updateUsername != null and updateUsername != ''">
+                and UPDATE_USERNAME = #{updateUsername}
+            </if>
+            <if test="updateTime != null">
+                and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+            </if>
+            <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+                and INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+            </if>
+        </where>
+    </sql>
+    <sql id="whereLike">
+        <where>
+            <if test="detailsStatementId != null">
+                and DETAILS_STATEMENT_ID = #{detailsStatementId}
+            </if>
+            <if test="statementId != null">
+                and STATEMENT_ID = #{statementId}
+            </if>
+            <if test="detailsId != null">
+                and DETAILS_ID = #{detailsId}
+            </if>
+            <if test="insertUsername != null and insertUsername != ''">
+                and INSERT_USERNAME LIKE '%${insertUsername}%'
+            </if>
+            <if test="insertTime != null">
+                and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+            </if>
+            <if test="updateUsername != null and updateUsername != ''">
+                and UPDATE_USERNAME LIKE '%${updateUsername}%'
+            </if>
+            <if test="updateTime != null">
+                and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+            </if>
+            <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+                and INSERT_UPDATE_REMARK LIKE '%${insertUpdateRemark}%'
+            </if>
+        </where>
+    </sql>
+    <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
+    delete from BMSSHIP_DETAILS_STATEMENT
+    where DETAILS_STATEMENT_ID = #{detailsStatementId,jdbcType=DECIMAL}
+  </delete>
+    <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
+        delete from BMSSHIP_DETAILS_STATEMENT
+        where 1!=1
+        <if test="statementId != null">
+            or STATEMENT_ID = #{statementId}
+        </if>
+        <if test="detailsId != null">
+            or DETAILS_ID = #{detailsId}
+        </if>
+        <if test="insertUsername != null and insertUsername != ''">
+            or INSERT_USERNAME = #{insertUsername}
+        </if>
+        <if test="insertTime != null">
+            or TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = '#{insertTime}'
+        </if>
+        <if test="updateUsername != null and updateUsername != ''">
+            or UPDATE_USERNAME = #{updateUsername}
+        </if>
+        <if test="updateTime != null">
+            or TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = '#{updateTime}'
+        </if>
+        <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+            or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+        </if>
+    </delete>
+    <insert id="insert" parameterType="com.steerinfo.dil.model.BmsshipDetailsStatement">
+    insert into BMSSHIP_DETAILS_STATEMENT (DETAILS_STATEMENT_ID, STATEMENT_ID,
+      DETAILS_ID, INSERT_USERNAME, INSERT_TIME,
+      UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK
+      )
+    values (#{detailsStatementId,jdbcType=DECIMAL}, #{statementId,jdbcType=DECIMAL},
+      #{detailsId,jdbcType=DECIMAL}, #{insertUsername,jdbcType=VARCHAR}, #{insertTime,jdbcType=TIMESTAMP},
+      #{updateUsername,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{insertUpdateRemark,jdbcType=VARCHAR}
+      )
+  </insert>
+    <insert id="insertSelective" parameterType="com.steerinfo.dil.model.BmsshipDetailsStatement">
+        insert into BMSSHIP_DETAILS_STATEMENT
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="detailsStatementId != null">
+                DETAILS_STATEMENT_ID,
+            </if>
+            <if test="statementId != null">
+                STATEMENT_ID,
+            </if>
+            <if test="detailsId != null">
+                DETAILS_ID,
+            </if>
+            <if test="insertUsername != null">
+                INSERT_USERNAME,
+            </if>
+            <if test="insertTime != null">
+                INSERT_TIME,
+            </if>
+            <if test="updateUsername != null">
+                UPDATE_USERNAME,
+            </if>
+            <if test="updateTime != null">
+                UPDATE_TIME,
+            </if>
+            <if test="insertUpdateRemark != null">
+                INSERT_UPDATE_REMARK,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="detailsStatementId != null">
+                #{detailsStatementId,jdbcType=DECIMAL},
+            </if>
+            <if test="statementId != null">
+                #{statementId,jdbcType=DECIMAL},
+            </if>
+            <if test="detailsId != null">
+                #{detailsId,jdbcType=DECIMAL},
+            </if>
+            <if test="insertUsername != null">
+                #{insertUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="insertTime != null">
+                #{insertTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUsername != null">
+                #{updateUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUpdateRemark != null">
+                #{insertUpdateRemark,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKey" parameterType="com.steerinfo.dil.model.BmsshipDetailsStatement">
+    update BMSSHIP_DETAILS_STATEMENT
+    set STATEMENT_ID = #{statementId,jdbcType=DECIMAL},
+      DETAILS_ID = #{detailsId,jdbcType=DECIMAL},
+      INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+      INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+      UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+      UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+      INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR}
+    where DETAILS_STATEMENT_ID = #{detailsStatementId,jdbcType=DECIMAL}
+  </update>
+    <update id="updateByPrimaryKeySelective" parameterType="com.steerinfo.dil.model.BmsshipDetailsStatement">
+        update BMSSHIP_DETAILS_STATEMENT
+        <set>
+            <if test="statementId != null">
+                STATEMENT_ID = #{statementId,jdbcType=DECIMAL},
+            </if>
+            <if test="detailsId != null">
+                DETAILS_ID = #{detailsId,jdbcType=DECIMAL},
+            </if>
+            <if test="insertUsername != null">
+                INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="insertTime != null">
+                INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUsername != null">
+                UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUpdateRemark != null">
+                INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where DETAILS_STATEMENT_ID = #{detailsStatementId,jdbcType=DECIMAL}
+    </update>
+    <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
+        <include refid="select"/>
+        where DETAILS_STATEMENT_ID = #{detailsStatementId,jdbcType=DECIMAL}
+    </select>
+    <select id="selectByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        <include refid="select"/>
+        <include refid="where"/>
+    </select>
+    <select id="selectLikeByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        <include refid="select"/>
+        <include refid="whereLike"/>
+    </select>
+    <insert id="batchInsert" parameterType="java.util.List">
+        insert into BMSSHIP_DETAILS_STATEMENT
+        (DETAILS_STATEMENT_ID,
+        STATEMENT_ID, DETAILS_ID, INSERT_USERNAME,
+        INSERT_TIME, UPDATE_USERNAME,
+        UPDATE_TIME, INSERT_UPDATE_REMARK
+        )
+        ( <foreach collection="list" item="item" separator="union all">
+        select
+        #{item.detailsStatementId,jdbcType=DECIMAL},
+        #{item.statementId,jdbcType=DECIMAL}, #{item.detailsId,jdbcType=DECIMAL}, #{item.insertUsername,jdbcType=VARCHAR},
+        #{item.insertTime,jdbcType=TIMESTAMP}, #{item.updateUsername,jdbcType=VARCHAR},
+        #{item.updateTime,jdbcType=TIMESTAMP}, #{item.insertUpdateRemark,jdbcType=VARCHAR}
+        from dual
+    </foreach> )
+    </insert>
+    <update id="batchUpdate" parameterType="java.util.List">
+        update BMSSHIP_DETAILS_STATEMENT
+        set
+        DETAILS_STATEMENT_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_STATEMENT_ID" close="end">
+            when #{item.detailsStatementId,jdbcType=DECIMAL} then #{item.detailsStatementId,jdbcType=DECIMAL}
+        </foreach>
+        ,STATEMENT_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_STATEMENT_ID" close="end">
+            when #{item.detailsStatementId,jdbcType=DECIMAL} then #{item.statementId,jdbcType=DECIMAL}
+        </foreach>
+        ,DETAILS_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_STATEMENT_ID" close="end">
+            when #{item.detailsStatementId,jdbcType=DECIMAL} then #{item.detailsId,jdbcType=DECIMAL}
+        </foreach>
+        ,INSERT_USERNAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_STATEMENT_ID" close="end">
+            when #{item.detailsStatementId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
+        </foreach>
+        ,INSERT_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_STATEMENT_ID" close="end">
+            when #{item.detailsStatementId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,UPDATE_USERNAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_STATEMENT_ID" close="end">
+            when #{item.detailsStatementId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
+        </foreach>
+        ,UPDATE_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_STATEMENT_ID" close="end">
+            when #{item.detailsStatementId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,INSERT_UPDATE_REMARK=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_STATEMENT_ID" close="end">
+            when #{item.detailsStatementId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
+        </foreach>
+        where DETAILS_STATEMENT_ID in
+        <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
+            #{item.detailsStatementId,jdbcType=DECIMAL}
+        </foreach>
+    </update>
+    <delete id="batchDelete" parameterType="java.util.List">
+        delete from BMSSHIP_DETAILS_STATEMENT
+        where DETAILS_STATEMENT_ID in
+        <foreach collection="list" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+    <!-- 友情提示!!!-->
+    <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
+    <select id="selectMaxId" resultType="DECIMAL">
+        SELECT MAX(DETAILS_STATEMENT_ID) FROM BMSSHIP_DETAILS_STATEMENT
+    </select>
+</mapper>

+ 987 - 0
src/main/resources/com/steerinfo/dil/mapper/BmsshipStatementMapper.xml

@@ -0,0 +1,987 @@
+<?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.steerinfo.dil.mapper.BmsshipStatementMapper">
+    <resultMap id="BaseResultMap" type="com.steerinfo.dil.model.BmsshipStatement">
+        <id column="STATEMENT_ID" jdbcType="DECIMAL" property="statementId"/>
+        <result column="STATEMENT_NO" jdbcType="VARCHAR" property="statementNo"/>
+        <result column="STATEMENT_SHIPPER_ID" jdbcType="DECIMAL" property="statementShipperId"/>
+        <result column="STATEMENT_TOTAL_AMOUNT" jdbcType="DECIMAL" property="statementTotalAmount"/>
+        <result column="STATEMENT_DATE" jdbcType="TIMESTAMP" property="statementDate"/>
+        <result column="INSERT_USERNAME" jdbcType="VARCHAR" property="insertUsername"/>
+        <result column="INSERT_TIME" jdbcType="TIMESTAMP" property="insertTime"/>
+        <result column="UPDATE_USERNAME" jdbcType="VARCHAR" property="updateUsername"/>
+        <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="INSERT_UPDATE_REMARK" jdbcType="VARCHAR" property="insertUpdateRemark"/>
+        <result column="STATEMENT_TYPE" jdbcType="VARCHAR" property="statementType"/>
+    </resultMap>
+    <sql id="columns">
+        STATEMENT_ID, STATEMENT_NO, STATEMENT_SHIPPER_ID, STATEMENT_TOTAL_AMOUNT, STATEMENT_DATE,
+    INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK,
+    STATEMENT_TYPE
+    </sql>
+    <sql id="columns_alias">
+        t.STATEMENT_ID, t.STATEMENT_NO, t.STATEMENT_SHIPPER_ID, t.STATEMENT_TOTAL_AMOUNT,
+    t.STATEMENT_DATE, t.INSERT_USERNAME, t.INSERT_TIME, t.UPDATE_USERNAME, t.UPDATE_TIME,
+    t.INSERT_UPDATE_REMARK, t.STATEMENT_TYPE
+    </sql>
+    <sql id="select">
+        SELECT
+        <include refid="columns"/>
+        FROM BMSSHIP_STATEMENT
+    </sql>
+    <sql id="select_alias">
+        SELECT
+        <include refid="columns_alias"/>
+        FROM BMSSHIP_STATEMENT t
+    </sql>
+    <sql id="where">
+        <where>
+            <if test="statementId != null">
+                and STATEMENT_ID = #{statementId}
+            </if>
+            <if test="statementNo != null and statementNo != ''">
+                and STATEMENT_NO = #{statementNo}
+            </if>
+            <if test="statementShipperId != null">
+                and STATEMENT_SHIPPER_ID = #{statementShipperId}
+            </if>
+            <if test="statementTotalAmount != null">
+                and STATEMENT_TOTAL_AMOUNT = #{statementTotalAmount}
+            </if>
+            <if test="statementDate != null">
+                and TO_CHAR(STATEMENT_DATE,'yyyy-MM-dd') = #{statementDate}
+            </if>
+            <if test="insertUsername != null and insertUsername != ''">
+                and INSERT_USERNAME = #{insertUsername}
+            </if>
+            <if test="insertTime != null">
+                and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+            </if>
+            <if test="updateUsername != null and updateUsername != ''">
+                and UPDATE_USERNAME = #{updateUsername}
+            </if>
+            <if test="updateTime != null">
+                and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+            </if>
+            <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+                and INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+            </if>
+            <if test="statementType != null and statementType != ''">
+                and STATEMENT_TYPE = #{statementType}
+            </if>
+        </where>
+    </sql>
+    <sql id="whereLike">
+        <where>
+            <if test="statementId != null">
+                and STATEMENT_ID = #{statementId}
+            </if>
+            <if test="statementNo != null and statementNo != ''">
+                and STATEMENT_NO LIKE '%${statementNo}%'
+            </if>
+            <if test="statementShipperId != null">
+                and STATEMENT_SHIPPER_ID = #{statementShipperId}
+            </if>
+            <if test="statementTotalAmount != null">
+                and STATEMENT_TOTAL_AMOUNT = #{statementTotalAmount}
+            </if>
+            <if test="statementDate != null">
+                and TO_CHAR(STATEMENT_DATE,'yyyy-MM-dd') = #{statementDate}
+            </if>
+            <if test="insertUsername != null and insertUsername != ''">
+                and INSERT_USERNAME LIKE '%${insertUsername}%'
+            </if>
+            <if test="insertTime != null">
+                and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+            </if>
+            <if test="updateUsername != null and updateUsername != ''">
+                and UPDATE_USERNAME LIKE '%${updateUsername}%'
+            </if>
+            <if test="updateTime != null">
+                and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+            </if>
+            <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+                and INSERT_UPDATE_REMARK LIKE '%${insertUpdateRemark}%'
+            </if>
+            <if test="statementType != null and statementType != ''">
+                and STATEMENT_TYPE LIKE '%${statementType}%'
+            </if>
+        </where>
+    </sql>
+    <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
+        delete
+        from BMSSHIP_STATEMENT
+        where STATEMENT_ID = #{statementId,jdbcType=DECIMAL}
+    </delete>
+    <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
+        delete from BMSSHIP_STATEMENT
+        where 1!=1
+        <if test="statementNo != null and statementNo != ''">
+            or STATEMENT_NO = #{statementNo}
+        </if>
+        <if test="statementShipperId != null">
+            or STATEMENT_SHIPPER_ID = #{statementShipperId}
+        </if>
+        <if test="statementTotalAmount != null">
+            or STATEMENT_TOTAL_AMOUNT = #{statementTotalAmount}
+        </if>
+        <if test="statementDate != null">
+            or TO_CHAR(STATEMENT_DATE,'yyyy-MM-dd') = '#{statementDate}'
+        </if>
+        <if test="insertUsername != null and insertUsername != ''">
+            or INSERT_USERNAME = #{insertUsername}
+        </if>
+        <if test="insertTime != null">
+            or TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = '#{insertTime}'
+        </if>
+        <if test="updateUsername != null and updateUsername != ''">
+            or UPDATE_USERNAME = #{updateUsername}
+        </if>
+        <if test="updateTime != null">
+            or TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = '#{updateTime}'
+        </if>
+        <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+            or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+        </if>
+        <if test="statementType != null and statementType != ''">
+            or STATEMENT_TYPE = #{statementType}
+        </if>
+    </delete>
+    <insert id="insert" parameterType="com.steerinfo.dil.model.BmsshipStatement">
+        insert into BMSSHIP_STATEMENT (STATEMENT_ID, STATEMENT_NO, STATEMENT_SHIPPER_ID,
+                                       STATEMENT_TOTAL_AMOUNT, STATEMENT_DATE,
+                                       INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME,
+                                       UPDATE_TIME, INSERT_UPDATE_REMARK, STATEMENT_TYPE)
+        values (#{statementId,jdbcType=DECIMAL}, #{statementNo,jdbcType=VARCHAR},
+                #{statementShipperId,jdbcType=DECIMAL},
+                #{statementTotalAmount,jdbcType=DECIMAL}, #{statementDate,jdbcType=TIMESTAMP},
+                #{insertUsername,jdbcType=VARCHAR}, #{insertTime,jdbcType=TIMESTAMP},
+                #{updateUsername,jdbcType=VARCHAR},
+                #{updateTime,jdbcType=TIMESTAMP}, #{insertUpdateRemark,jdbcType=VARCHAR},
+                #{statementType,jdbcType=VARCHAR})
+    </insert>
+    <insert id="insertSelective" parameterType="com.steerinfo.dil.model.BmsshipStatement">
+        insert into BMSSHIP_STATEMENT
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="statementId != null">
+                STATEMENT_ID,
+            </if>
+            <if test="statementNo != null">
+                STATEMENT_NO,
+            </if>
+            <if test="statementShipperId != null">
+                STATEMENT_SHIPPER_ID,
+            </if>
+            <if test="statementTotalAmount != null">
+                STATEMENT_TOTAL_AMOUNT,
+            </if>
+            <if test="statementDate != null">
+                STATEMENT_DATE,
+            </if>
+            <if test="insertUsername != null">
+                INSERT_USERNAME,
+            </if>
+            <if test="insertTime != null">
+                INSERT_TIME,
+            </if>
+            <if test="updateUsername != null">
+                UPDATE_USERNAME,
+            </if>
+            <if test="updateTime != null">
+                UPDATE_TIME,
+            </if>
+            <if test="insertUpdateRemark != null">
+                INSERT_UPDATE_REMARK,
+            </if>
+            <if test="statementType != null">
+                STATEMENT_TYPE,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="statementId != null">
+                #{statementId,jdbcType=DECIMAL},
+            </if>
+            <if test="statementNo != null">
+                #{statementNo,jdbcType=VARCHAR},
+            </if>
+            <if test="statementShipperId != null">
+                #{statementShipperId,jdbcType=DECIMAL},
+            </if>
+            <if test="statementTotalAmount != null">
+                #{statementTotalAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="statementDate != null">
+                #{statementDate,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUsername != null">
+                #{insertUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="insertTime != null">
+                #{insertTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUsername != null">
+                #{updateUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUpdateRemark != null">
+                #{insertUpdateRemark,jdbcType=VARCHAR},
+            </if>
+            <if test="statementType != null">
+                #{statementType,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKey" parameterType="com.steerinfo.dil.model.BmsshipStatement">
+        update BMSSHIP_STATEMENT
+        set STATEMENT_NO           = #{statementNo,jdbcType=VARCHAR},
+            STATEMENT_SHIPPER_ID   = #{statementShipperId,jdbcType=DECIMAL},
+            STATEMENT_TOTAL_AMOUNT = #{statementTotalAmount,jdbcType=DECIMAL},
+            STATEMENT_DATE         = #{statementDate,jdbcType=TIMESTAMP},
+            INSERT_USERNAME        = #{insertUsername,jdbcType=VARCHAR},
+            INSERT_TIME            = #{insertTime,jdbcType=TIMESTAMP},
+            UPDATE_USERNAME        = #{updateUsername,jdbcType=VARCHAR},
+            UPDATE_TIME            = #{updateTime,jdbcType=TIMESTAMP},
+            INSERT_UPDATE_REMARK   = #{insertUpdateRemark,jdbcType=VARCHAR},
+            STATEMENT_TYPE         = #{statementType,jdbcType=VARCHAR}
+        where STATEMENT_ID = #{statementId,jdbcType=DECIMAL}
+    </update>
+    <update id="updateByPrimaryKeySelective" parameterType="com.steerinfo.dil.model.BmsshipStatement">
+        update BMSSHIP_STATEMENT
+        <set>
+            <if test="statementNo != null">
+                STATEMENT_NO = #{statementNo,jdbcType=VARCHAR},
+            </if>
+            <if test="statementShipperId != null">
+                STATEMENT_SHIPPER_ID = #{statementShipperId,jdbcType=DECIMAL},
+            </if>
+            <if test="statementTotalAmount != null">
+                STATEMENT_TOTAL_AMOUNT = #{statementTotalAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="statementDate != null">
+                STATEMENT_DATE = #{statementDate,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUsername != null">
+                INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="insertTime != null">
+                INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUsername != null">
+                UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUpdateRemark != null">
+                INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+            </if>
+            <if test="statementType != null">
+                STATEMENT_TYPE = #{statementType,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where STATEMENT_ID = #{statementId,jdbcType=DECIMAL}
+    </update>
+    <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
+        <include refid="select"/>
+        where STATEMENT_ID = #{statementId,jdbcType=DECIMAL}
+    </select>
+    <select id="selectByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        <include refid="select"/>
+        <include refid="where"/>
+    </select>
+    <select id="selectLikeByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        <include refid="select"/>
+        <include refid="whereLike"/>
+    </select>
+    <insert id="batchInsert" parameterType="java.util.List">
+        insert into BMSSHIP_STATEMENT
+        (STATEMENT_ID,
+        STATEMENT_NO, STATEMENT_SHIPPER_ID,
+        STATEMENT_TOTAL_AMOUNT, STATEMENT_DATE,
+        INSERT_USERNAME, INSERT_TIME,
+        UPDATE_USERNAME, UPDATE_TIME,
+        INSERT_UPDATE_REMARK, STATEMENT_TYPE
+        )
+        ( <foreach collection="list" item="item" separator="union all">
+        select
+        #{item.statementId,jdbcType=DECIMAL},
+        #{item.statementNo,jdbcType=VARCHAR}, #{item.statementShipperId,jdbcType=DECIMAL},
+        #{item.statementTotalAmount,jdbcType=DECIMAL}, #{item.statementDate,jdbcType=TIMESTAMP},
+        #{item.insertUsername,jdbcType=VARCHAR}, #{item.insertTime,jdbcType=TIMESTAMP},
+        #{item.updateUsername,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP},
+        #{item.insertUpdateRemark,jdbcType=VARCHAR}, #{item.statementType,jdbcType=VARCHAR}
+        from dual
+    </foreach> )
+    </insert>
+    <update id="batchUpdate" parameterType="java.util.List">
+        update BMSSHIP_STATEMENT
+        set
+        STATEMENT_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.statementId,jdbcType=DECIMAL}
+        </foreach>
+        ,STATEMENT_NO=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.statementNo,jdbcType=VARCHAR}
+        </foreach>
+        ,STATEMENT_SHIPPER_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.statementShipperId,jdbcType=DECIMAL}
+        </foreach>
+        ,STATEMENT_TOTAL_AMOUNT=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.statementTotalAmount,jdbcType=DECIMAL}
+        </foreach>
+        ,STATEMENT_DATE=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.statementDate,jdbcType=TIMESTAMP}
+        </foreach>
+        ,INSERT_USERNAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
+        </foreach>
+        ,INSERT_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,UPDATE_USERNAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
+        </foreach>
+        ,UPDATE_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,INSERT_UPDATE_REMARK=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
+        </foreach>
+        ,STATEMENT_TYPE=
+        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.statementType,jdbcType=VARCHAR}
+        </foreach>
+        where STATEMENT_ID in
+        <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
+            #{item.statementId,jdbcType=DECIMAL}
+        </foreach>
+    </update>
+    <delete id="batchDelete" parameterType="java.util.List">
+        delete from BMSSHIP_STATEMENT
+        where STATEMENT_ID in
+        <foreach collection="list" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+    <!-- 友情提示!!!-->
+    <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
+    <select id="selectMaxId" resultType="DECIMAL">
+        SELECT MAX(STATEMENT_ID)
+        FROM BMSSHIP_STATEMENT
+    </select>
+
+    <!-- 展示账单列表 -->
+    <select id="getStatementList" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT * FROM (
+        SELECT DISTINCT
+        bs.INSERT_TIME as "insertTime",
+        bs.STATEMENT_ID as "statementId",
+        apo.BATCH_ID as "batchId",
+        bs.STATEMENT_NO as "statementNo",
+        bs.STATEMENT_DATE as "statementDate",
+        rs.SHIPPER_NAME as "shipperName",
+        bs.STATEMENT_TYPE as "statementType",
+        bs.STATEMENT_TOTAL_AMOUNT as "statementTotalAmount"
+        FROM BMSSHIP_STATEMENT bs
+        LEFT JOIN RMS_SHIPPER rs
+        ON rs.SHIPPER_ID = bs.STATEMENT_SHIPPER_ID
+        LEFT JOIN BMSSHIP_DETAILS_STATEMENT bds
+        ON bds.STATEMENT_ID = bs.STATEMENT_ID
+        LEFT JOIN BMSSHIP_DETAILS_ORDER bdo
+        ON bdo.DETAILS_ID = bds.DETAILS_ID
+        LEFT JOIN AMS_PURCHASE_ORDER apo
+        ON apo.PURCHASE_ORDER_ID = bdo.PURCHASE_ORDER_ID
+        WHERE bs.STATEMENT_TYPE != '物流途损超标扣款'
+        )
+        <where>
+            <if test="statementNo!= null">
+                and
+                <foreach collection="statementNo" item="item" open="(" separator="," close=")">
+                    "statementNo" in #{item}
+                </foreach>
+            </if>
+            <if test="statementDate!= null">
+                and
+                <foreach collection="statementDate" item="item" open="(" separator="," close=")">
+                    "statementDate" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="shipperName!= null">
+                and
+                <foreach collection="shipperName" item="item" open="(" separator="," close=")">
+                    "shipperName" in #{item}
+                </foreach>
+            </if>
+            <if test="statementType!= null">
+                and
+                <foreach collection="statementType" item="item" open="(" separator="," close=")">
+                    "statementType" in #{item}
+                </foreach>
+            </if>
+            <if test="statementTotalAmount!= null">
+                and
+                <foreach collection="statementTotalAmount" item="item" open="(" separator="," close=")">
+                    "statementTotalAmount" in #{item}
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderBy"></include>
+    </select>
+
+    <!-- 展示物流途损费列表 -->
+    <select id="getLossStatementList" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT * FROM (
+        SELECT DISTINCT
+        bs.STATEMENT_ID as "statementId",
+        -- apo.BATCH_ID as "batchId",
+        -- db.RESULT_FOREIGN_SHIP_NAME as "foreignShipName",
+        -- rm.MATERIAL_NAME as "materialName",
+        bs.STATEMENT_NO as "statementNo",
+        bs.STATEMENT_DATE as "statementDate",
+        rp.PORT_NAME as "shipperName",
+        bs.STATEMENT_TYPE as "statementType",
+        bs.STATEMENT_TOTAL_AMOUNT as "statementTotalAmount"
+        FROM BMSSHIP_STATEMENT bs
+        LEFT JOIN RMS_PORT rp
+        ON rp.PORT_ID = bs.STATEMENT_SHIPPER_ID
+        -- LEFT JOIN BMSSHIP_DETAILS_STATEMENT bds
+        -- ON bds.STATEMENT_ID = bs.STATEMENT_ID
+        -- LEFT JOIN BMSSHIP_DETAILS_ORDER bdo
+        -- ON bdo.DETAILS_ID = bds.DETAILS_ID
+        -- LEFT JOIN AMS_PURCHASE_ORDER apo
+        -- ON apo.PURCHASE_ORDER_ID = bdo.PURCHASE_ORDER_ID
+        -- LEFT JOIN DIL_BATCH db
+        -- ON apo.BATCH_ID = db.BATCH_ID
+        -- LEFT JOIN RMS_MATERIAL rm
+        -- ON rm.MATERIAL_ID = db.MATERIAL_ID
+        WHERE bs.STATEMENT_TYPE = '物流途损超标扣款'
+        )
+        <where>
+            <if test="statementNo!= null">
+                and
+                <foreach collection="statementNo" item="item" open="(" separator="," close=")">
+                    "statementNo" in #{item}
+                </foreach>
+            </if>
+            <if test="statementDate!= null">
+                and
+                <foreach collection="statementDate" item="item" open="(" separator="," close=")">
+                    "statementDate" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="shipperName!= null">
+                and
+                <foreach collection="shipperName" item="item" open="(" separator="," close=")">
+                    "shipperName" in #{item}
+                </foreach>
+            </if>
+            <if test="statementType!= null">
+                and
+                <foreach collection="statementType" item="item" open="(" separator="," close=")">
+                    "statementType" in #{item}
+                </foreach>
+            </if>
+            <if test="statementTotalAmount!= null">
+                and
+                <foreach collection="statementTotalAmount" item="item" open="(" separator="," close=")">
+                    "statementTotalAmount" in #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
+    <!-- 展示账单中的详单 -->
+    <select id="getDetailsOrder" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT * FROM(
+        SELECT DISTINCT
+        bdo.INSERT_TIME as "insertTime",
+        bdo.DETAILS_ID as "detailsId",
+        db.BATCH_ID as "batchId",
+        apo.RECEIVE_UNIT_ID as "statementShipperId",
+        apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+        rm.MATERIAL_NAME as "materialName",
+        db.RESULT_FOREIGN_SHIP_NAME as "resultForeignShipName",
+        bdo.DETAILS_NO as "detailsNo",
+        bdo.DETAILS_TIME as "detailsTime",
+        bdo.DETAILS_FEE_TYPE as "detailsFeeType",
+        srp.PORT_NAME as "startPort",
+        erp.PORT_NAME as "endPort",
+        twr.RESULT_NET_WEIGHT as "resultNetWeight",
+        bdo.DETAILS_AMOUNT as "detailsAmount"
+        FROM BMSSHIP_DETAILS_ORDER bdo
+        LEFT JOIN BMSSHIP_DETAILS_STATEMENT bds
+        ON bdo.DETAILS_ID = bds.DETAILS_ID
+        LEFT JOIN AMS_PURCHASE_ORDER apo
+        ON apo.PURCHASE_ORDER_ID = bdo.PURCHASE_ORDER_ID
+        LEFT JOIN DIL_BATCH db
+        ON db.BATCH_ID = apo.BATCH_ID
+        LEFT JOIN RMS_MATERIAL rm
+        ON rm.MATERIAL_ID = db.MATERIAL_ID
+        LEFT JOIN OMSSHIP_SHIPMENT_INSTRUCTIONS osi
+        ON osi.BATCH_ID = db.BATCH_ID
+        LEFT JOIN OMSSHIP_INSTRUCTIONS_CAPACITY oci
+        ON osi.SHIPMENT_INSTRUCTIONS_ID = oci.INSTRUCTIONS_ID
+        LEFT JOIN TMSSHIP_TOTAL_RESULT shiptr
+        ON oci.INSTRUCTIONS_CAPACITY_ID = shiptr.ORDER_ID
+        LEFT JOIN TMSSHIP_LOAD_SHIP_RESULT tlsr
+        ON shiptr.RESULT_ID = tlsr.TOTAL_RESULT_ID
+        LEFT JOIN RMS_PORT srp
+        ON tlsr.LOCATION_START_PORT_ID = srp.PORT_ID
+        LEFT JOIN RMS_PORT erp
+        ON tlsr.ARRIVAL_PORT_ID = erp.PORT_ID
+        LEFT JOIN AMSTRUCK_PURPLAN ap
+        ON ap.BATCH_ID = db.BATCH_ID
+        LEFT JOIN TMSTRUCK_WEIGHT_RESULT twr
+        ON twr.RESULT_TOTAL_ID = bdo.TRUCK_RESULT_TOTAL_ID
+        WHERE bdo.WETHER_TO_STATEMENT = 1
+        AND db.BATCH_ID = #{batchId}
+        AND bds.STATEMENT_ID = #{statementId}
+        )
+        <where>
+            <if test="purchaseOrderNo!= null">
+                and
+                <foreach collection="purchaseOrderNo" item="item" open="(" separator="," close=")">
+                    "purchaseOrderNo" in #{item}
+                </foreach>
+            </if>
+            <if test="materialName!= null">
+                and
+                <foreach collection="materialName" item="item" open="(" separator="," close=")">
+                    "materialName" in #{item}
+                </foreach>
+            </if>
+            <if test="resultForeignShipName!= null">
+                and
+                <foreach collection="resultForeignShipName" item="item" open="(" separator="," close=")">
+                    "resultForeignShipName" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsNo!= null">
+                and
+                <foreach collection="detailsNo" item="item" open="(" separator="," close=")">
+                    "detailsNo" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsTime!= null">
+                and
+                <foreach collection="detailsTime" item="item" open="(" separator="," close=")">
+                    "detailsTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="detailsFeeType!= null">
+                and
+                <foreach collection="detailsFeeType" item="item" open="(" separator="," close=")">
+                    "detailsFeeType" in #{item}
+                </foreach>
+            </if>
+            <if test="startPort!= null">
+                and
+                <foreach collection="startPort" item="item" open="(" separator="," close=")">
+                    "startPort" in #{item}
+                </foreach>
+            </if>
+            <if test="endPort!= null">
+                and
+                <foreach collection="endPort" item="item" open="(" separator="," close=")">
+                    "endPort" in #{item}
+                </foreach>
+            </if>
+            <if test="resultNetWeight!= null">
+                and
+                <foreach collection="resultNetWeight" item="item" open="(" separator="," close=")">
+                    "resultNetWeight" in #{item}
+                </foreach>
+            </if>
+            <if test="detailsAmount!= null">
+                and
+                <foreach collection="detailsAmount" item="item" open="(" separator="," close=")">
+                    "detailsAmount" in #{item}
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderBy"></include>
+    </select>
+    <sql id="orderBy">
+        <if test="orderField != null and orderField != ''">
+            order by "${orderField}"
+            <if test="orderType != null and orderType != ''">
+                ${orderType}
+            </if>
+        </if>
+        <if test="orderField == null  ">
+            order by "insertTime" desc
+        </if>
+    </sql>
+
+    <!-- 得到支付单位 -->
+    <select id="getShipperAndAmount" parameterType="DECIMAL" resultType="java.util.Map">
+        SELECT *
+        FROM (
+                 SELECT DISTINCT rs.SHIPPER_NAME           as "shipperName",
+                                 bs.STATEMENT_TOTAL_AMOUNT as "statementTotalAmount"
+                 FROM BMSSHIP_STATEMENT bs
+                          LEFT JOIN RMS_SHIPPER rs
+                                    ON rs.SHIPPER_ID = bs.STATEMENT_SHIPPER_ID
+                          LEFT JOIN BMSSHIP_DETAILS_STATEMENT bds
+                                    ON bs.STATEMENT_ID = bds.STATEMENT_ID
+                          LEFT JOIN BMSSHIP_DETAILS_ORDER bdo
+                                    ON bdo.DETAILS_ID = bds.DETAILS_ID
+                          LEFT JOIN AMS_PURCHASE_ORDER apo
+                                    ON apo.PURCHASE_ORDER_ID = bdo.PURCHASE_ORDER_ID
+                 where apo.BATCH_ID = #{batchId}
+             )
+    </select>
+
+    <!-- 船运实绩 -->
+    <select id="getShipResult" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT *
+        FROM (
+        SELECT DISTINCT
+        db.BATCH_ID as "batchId",
+        apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+        db.RESULT_FOREIGN_SHIP_NAME as "foreignShipName",
+        rm.MATERIAL_NAME as "materialName",
+        srp.PORT_NAME as "startPort",
+        rc.CAPACITY_NUMBER as "capacityName",
+        arp.PORT_NAME as "arrivalPort",
+        tlsr.RESULT_ACTUAL_INSTALLATIONS as "loadWeight",
+        tlsr.RESULT_LOAD_SHIP_DATE as "insertTime",
+        twqr.RESULT_WATER_TONNAGE as "waterWeight",
+        twqr.RESULT_INSPECTION_FEES as "inspectionFees"
+        FROM AMS_PURCHASE_ORDER apo
+        LEFT JOIN DIL_BATCH db
+        ON apo.BATCH_ID = db.BATCH_ID
+        LEFT JOIN OMSSHIP_SHIPMENT_INSTRUCTIONS osi
+        ON osi.BATCH_ID = db.BATCH_ID
+        LEFT JOIN OMSSHIP_INSTRUCTIONS_CAPACITY oic
+        ON oic.INSTRUCTIONS_ID = osi.SHIPMENT_INSTRUCTIONS_ID
+        LEFT JOIN RMS_CAPACITY rc
+        ON oic.CAPACITY_ID = rc.CAPACITY_ID
+        LEFT JOIN RMS_MATERIAL RM
+        ON db.MATERIAL_ID = RM.MATERIAL_ID
+        LEFT JOIN TMSSHIP_TOTAL_RESULT ttr
+        ON ttr.ORDER_ID = oic.INSTRUCTIONS_CAPACITY_ID
+        LEFT JOIN TMSSHIP_LOAD_SHIP_RESULT tlsr
+        ON ttr.RESULT_ID = tlsr.TOTAL_RESULT_ID
+        LEFT JOIN TMSSHIP_WATER_QUALITY_RESULT twqr
+        ON ttr.RESULT_ID = twqr.TOTAL_RESULT_ID
+        LEFT JOIN RMS_PORT srp
+        ON tlsr.LOCATION_START_PORT_ID = srp.PORT_ID
+        LEFT JOIN RMS_PORT arp
+        ON tlsr.ARRIVAL_PORT_ID = arp.PORT_ID
+        WHERE db.BATCH_ID = #{batchId}
+        )
+        <where>
+            <if test="purchaseOrderNo!= null">
+                and
+                <foreach collection="purchaseOrderNo" item="item" open="(" separator="," close=")">
+                    "purchaseOrderNo" in #{item}
+                </foreach>
+            </if>
+            <if test="foreignShipName!= null">
+                and
+                <foreach collection="foreignShipName" item="item" open="(" separator="," close=")">
+                    "foreignShipName" in #{item}
+                </foreach>
+            </if>
+            <if test="materialName!= null">
+                and
+                <foreach collection="materialName" item="item" open="(" separator="," close=")">
+                    "materialName" in #{item}
+                </foreach>
+            </if>
+            <if test="capacityName!= null">
+                and
+                <foreach collection="capacityName" item="item" open="(" separator="," close=")">
+                    "capacityName" in #{item}
+                </foreach>
+            </if>
+            <if test="startPort!= null">
+                and
+                <foreach collection="startPort" item="item" open="(" separator="," close=")">
+                    "startPort" in #{item}
+                </foreach>
+            </if>
+            <if test="arrivalPort!= null">
+                and
+                <foreach collection="arrivalPort" item="item" open="(" separator="," close=")">
+                    "arrivalPort" in #{item}
+                </foreach>
+            </if>
+            <if test="loadWeight!= null">
+                and
+                <foreach collection="loadWeight" item="item" open="(" separator="," close=")">
+                    "loadWeight" in #{item}
+                </foreach>
+            </if>
+            <if test="insertTime!= null">
+                and
+                <foreach collection="insertTime" item="item" open="(" separator="," close=")">
+                    "insertTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="waterWeight!= null">
+                and
+                <foreach collection="waterWeight" item="item" open="(" separator="," close=")">
+                    "waterWeight" in #{item}
+                </foreach>
+            </if>
+            <if test="inspectionFees!= null">
+                and
+                <foreach collection="inspectionFees" item="item" open="(" separator="," close=")">
+                    "inspectionFees" in #{item}
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderBy"></include>
+    </select>
+
+    <!-- 得到批次 -->
+    <select id="getBatch" parameterType="java.util.Map" resultType="java.util.Map">
+        SELECT *
+        FROM (
+        SELECT DISTINCT apo.BATCH_ID as "batchId",
+        apo.INSERT_TIME as "insertTime",
+        apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+        db.RESULT_FOREIGN_SHIP_NAME as "foreignShipName",
+        rm.MATERIAL_NAME as "materialName"
+        FROM AMS_PURCHASE_ORDER apo
+        LEFT JOIN DIL_BATCH db
+        ON db.BATCH_ID = apo.BATCH_ID
+        LEFT JOIN RMS_MATERIAL rm
+        ON rm.MATERIAL_ID = db.MATERIAL_ID
+        )
+        <include refid="orderBy"></include>
+        <where>
+            <if test="purchaseOrderNo!= null">
+                and
+                <foreach collection="purchaseOrderNo" item="item" open="(" separator="," close=")">
+                    "purchaseOrderNo" in #{item}
+                </foreach>
+            </if>
+            <if test="foreignShipName!= null">
+                and
+                <foreach collection="foreignShipName" item="item" open="(" separator="," close=")">
+                    "foreignShipName" in #{item}
+                </foreach>
+            </if>
+            <if test="materialName!= null">
+                and
+                <foreach collection="inspectionFees" item="item" open="(" separator="," close=")">
+                    "materialName" in #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
+    <!-- 水分检测 -->
+    <select id="getWaterResult" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT *
+        FROM (
+        SELECT DISTINCT
+        db.BATCH_ID as "batchId",
+        apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+        db.RESULT_FOREIGN_SHIP_NAME as "foreignShipName",
+        rm.MATERIAL_NAME as "materialName",
+        tlsr.RESULT_LOAD_SHIP_DATE as "insertTime",
+        twqr.RESULT_WATER_TONNAGE as "waterWeight",
+        twqr.RESULT_INSPECTION_FEES as "inspectionFees"
+        FROM TMSSHIP_WATER_QUALITY_RESULT twqr
+        LEFT JOIN TMSSHIP_TOTAL_RESULT ttr
+        ON ttr.RESULT_ID = twqr.TOTAL_RESULT_ID
+        LEFT JOIN TMSSHIP_LOAD_SHIP_RESULT tlsr
+        ON ttr.RESULT_ID = tlsr.TOTAL_RESULT_ID
+        LEFT JOIN OMSSHIP_INSTRUCTIONS_CAPACITY oic
+        ON ttr.ORDER_ID = oic.INSTRUCTIONS_CAPACITY_ID
+        LEFT JOIN OMSSHIP_SHIPMENT_INSTRUCTIONS osi
+        ON oic.INSTRUCTIONS_ID = osi.SHIPMENT_INSTRUCTIONS_ID
+        LEFT JOIN DIL_BATCH db
+        ON osi.BATCH_ID = db.BATCH_ID
+        LEFT JOIN AMS_PURCHASE_ORDER apo
+        ON apo.BATCH_ID = db.BATCH_ID
+        LEFT JOIN RMS_MATERIAL rm
+        ON db.MATERIAL_ID = RM.MATERIAL_ID
+        )
+        <where>
+            <if test="purchaseOrderNo!= null">
+                and
+                <foreach collection="purchaseOrderNo" item="item" open="(" separator="," close=")">
+                    "purchaseOrderNo" in #{item}
+                </foreach>
+            </if>
+            <if test="foreignShipName!= null">
+                and
+                <foreach collection="foreignShipName" item="item" open="(" separator="," close=")">
+                    "foreignShipName" in #{item}
+                </foreach>
+            </if>
+            <if test="materialName!= null">
+                and
+                <foreach collection="materialName" item="item" open="(" separator="," close=")">
+                    "materialName" in #{item}
+                </foreach>
+            </if>
+            <if test="insertTime!= null">
+                and
+                <foreach collection="insertTime" item="item" open="(" separator="," close=")">
+                    "insertTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="waterWeight!= null">
+                and
+                <foreach collection="waterWeight" item="item" open="(" separator="," close=")">
+                    "waterWeight" in #{item}
+                </foreach>
+            </if>
+            <if test="inspectionFees!= null">
+                and
+                <foreach collection="inspectionFees" item="item" open="(" separator="," close=")">
+                    "inspectionFees" in #{item}
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderBy"></include>
+    </select>
+
+    <!-- 汽运实绩 -->
+    <select id="getTruckResult" resultType="java.util.Map" parameterType="DECIMAL">
+        SELECT *
+        FROM (
+        SELECT DISTINCT apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+        db.RESULT_FOREIGN_SHIP_NAME as "foreignShipName",
+        rm.MATERIAL_NAME as "materialName",
+        oo.ORDER_NUMBER as "orderNumber",
+        rc.CARRIER_NAME as "carrierName",
+        erg.GATEPOST_NAME as "entryGatepostName",
+        ter.RESULT_ENTRY_GATE_TIME as "entryGateTime",
+        twr.RESULT_NET_WEIGHT as "arrivalWeight",
+        twr.RESULT_POUND_NO as "poundNo",
+        trr.RESULT_RECEIVE_TIME as "receiveTime",
+        lrg.GATEPOST_NAME as "leaveGatepostName",
+        tlfr.RESULT_OUT_GATE_TIME as "outGateTime"
+        FROM AMS_PURCHASE_ORDER apo
+        LEFT JOIN DIL_BATCH db
+        ON apo.BATCH_ID = db.BATCH_ID
+        LEFT JOIN RMS_MATERIAL rm
+        ON rm.MATERIAL_ID = db.MATERIAL_ID
+        LEFT JOIN AMSTRUCK_PURPLAN ap
+        ON ap.BATCH_ID = db.BATCH_ID
+        LEFT JOIN OMSTRUCK_ORDER oo
+        ON oo.ORDER_PLAN_ID = ap.PLAN_ID
+        LEFT JOIN TMSTRUCK_TOTAL_RESULT ttr
+        ON oo.ORDER_ID = ttr.ORDER_ID
+        LEFT JOIN TMSTRUCK_WEIGHT_RESULT twr
+        ON ttr.RESULT_TOTAL_ID = twr.RESULT_TOTAL_ID
+        LEFT JOIN TMSTRUCK_RECEIVE_RESULT trr
+        ON ttr.RESULT_TOTAL_ID = trr.RESULT_TOTAL_ID
+        LEFT JOIN TMSTRUCK_ENFACTORY_RESULT ter
+        ON ttr.RESULT_TOTAL_ID = ter.RESULT_TOTAL_ID
+        LEFT JOIN RMS_GATEPOST erg
+        ON erg.GATEPOST_ID = ter.GATEPOST_ID
+        LEFT JOIN TMSTRUCK_LEAVE_FACTORY_RESULT tlfr
+        ON tlfr.RESULT_TOTAL_ID = ter.RESULT_TOTAL_ID
+        LEFT JOIN RMS_GATEPOST lrg
+        ON lrg.GATEPOST_ID = tlfr.GATEPOST_ID
+        LEFT JOIN RMS_CARRIER rc
+        ON rc.CARRIER_ID = ap.CARRIER_ID
+        WHERE apo.BATCH_ID = #{batchId}
+        )
+        <where>
+            <if test="purchaseOrderNo!= null">
+                and
+                <foreach collection="purchaseOrderNo" item="item" open="(" separator="," close=")">
+                    "purchaseOrderNo" in #{item}
+                </foreach>
+            </if>
+            <if test="foreignShipName!= null">
+                and
+                <foreach collection="foreignShipName" item="item" open="(" separator="," close=")">
+                    "foreignShipName" in #{item}
+                </foreach>
+            </if>
+            <if test="materialName!= null">
+                and
+                <foreach collection="materialName" item="item" open="(" separator="," close=")">
+                    "materialName" in #{item}
+                </foreach>
+            </if>
+            <if test="carrierName!= null">
+                and
+                <foreach collection="carrierName" item="item" open="(" separator="," close=")">
+                    "carrierName" in #{item}
+                </foreach>
+            </if>
+            <if test="orderNumber!= null">
+                and
+                <foreach collection="orderNumber" item="item" open="(" separator="," close=")">
+                    "orderNumber" in #{item}
+                </foreach>
+            </if>
+            <if test="entryGatepostName!= null">
+                and
+                <foreach collection="entryGatepostName" item="item" open="(" separator="," close=")">
+                    "entryGatepostName" in #{item}
+                </foreach>
+            </if>
+            <if test="entryGateTime!= null">
+                and
+                <foreach collection="entryGateTime" item="item" open="(" separator="," close=")">
+                    "entryGateTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="arrivalWeight!= null">
+                and
+                <foreach collection="arrivalWeight" item="item" open="(" separator="," close=")">
+                    "arrivalWeight" in #{item}
+                </foreach>
+            </if>
+            <if test="poundNo!= null">
+                and
+                <foreach collection="poundNo" item="item" open="(" separator="," close=")">
+                    "poundNo" in #{item}
+                </foreach>
+            </if>
+            <if test="receiveTime!= null">
+                and
+                <foreach collection="receiveTime" item="item" open="(" separator="," close=")">
+                    "receiveTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="leaveGatepostName!= null">
+                and
+                <foreach collection="leaveGatepostName" item="item" open="(" separator="," close=")">
+                    "leaveGatepostName" in #{item}
+                </foreach>
+            </if>
+            <if test="outGateTime!= null">
+                and
+                <foreach collection="outGateTime" item="item" open="(" separator="," close=")">
+                    "outGateTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderByReceiveTime"></include>
+    </select>
+    <sql id="orderByReceiveTime">
+        <if test="orderField != null and orderField != ''">
+            order by "${orderField}"
+            <if test="orderType != null and orderType != ''">
+                ${orderType}
+            </if>
+        </if>
+        <if test="orderField == null  ">
+            order by "receiveTime" desc
+        </if>
+    </sql>
+</mapper>

+ 551 - 0
src/main/resources/com/steerinfo/dil/mapper/BmstruckFormulaMapper.xml

@@ -0,0 +1,551 @@
+<?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.steerinfo.dil.mapper.BmstruckFormulaMapper">
+    <resultMap id="BaseResultMap" type="com.steerinfo.dil.model.BmstruckFormula">
+        <id column="FORMULA_ID" jdbcType="DECIMAL" property="formulaId"/>
+        <result column="TAX_ID" jdbcType="DECIMAL" property="taxId"/>
+        <result column="CHILDREN_CONDITION_FORMULA" jdbcType="VARCHAR" property="childrenConditionFormula"/>
+        <result column="CHILDREN_CONDITION_JUDGE" jdbcType="VARCHAR" property="childrenConditionJudge"/>
+        <result column="FORMULA_NAME" jdbcType="VARCHAR" property="formulaName"/>
+        <result column="FORMULA_STRING" jdbcType="VARCHAR" property="formulaString"/>
+        <result column="VIOLATION_TYPE_ID" jdbcType="DECIMAL" property="violationTypeId"/>
+        <result column="INSERT_USERNAME" jdbcType="VARCHAR" property="insertUsername"/>
+        <result column="INSERT_TIME" jdbcType="TIMESTAMP" property="insertTime"/>
+        <result column="UPDATE_USERNAME" jdbcType="VARCHAR" property="updateUsername"/>
+        <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="INSERT_UPDATE_REMARK" jdbcType="VARCHAR" property="insertUpdateRemark"/>
+    </resultMap>
+    <sql id="columns">
+        FORMULA_ID, TAX_ID, CHILDREN_CONDITION_FORMULA, CHILDREN_CONDITION_JUDGE, FORMULA_NAME,
+    FORMULA_STRING, VIOLATION_TYPE_ID, INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME,
+    UPDATE_TIME, INSERT_UPDATE_REMARK
+    </sql>
+    <sql id="columns_alias">
+        t.FORMULA_ID, t.TAX_ID, t.CHILDREN_CONDITION_FORMULA, t.CHILDREN_CONDITION_JUDGE,
+    t.FORMULA_NAME, t.FORMULA_STRING, t.VIOLATION_TYPE_ID, t.INSERT_USERNAME, t.INSERT_TIME,
+    t.UPDATE_USERNAME, t.UPDATE_TIME, t.INSERT_UPDATE_REMARK
+    </sql>
+    <sql id="select">
+        SELECT
+        <include refid="columns"/>
+        FROM BMSTRUCK_FORMULA
+    </sql>
+    <sql id="select_alias">
+        SELECT
+        <include refid="columns_alias"/>
+        FROM BMSTRUCK_FORMULA t
+    </sql>
+    <sql id="where">
+        <where>
+            <if test="formulaId != null">
+                and FORMULA_ID = #{formulaId}
+            </if>
+            <if test="taxId != null">
+                and TAX_ID = #{taxId}
+            </if>
+            <if test="childrenConditionFormula != null and childrenConditionFormula != ''">
+                and CHILDREN_CONDITION_FORMULA = #{childrenConditionFormula}
+            </if>
+            <if test="childrenConditionJudge != null and childrenConditionJudge != ''">
+                and CHILDREN_CONDITION_JUDGE = #{childrenConditionJudge}
+            </if>
+            <if test="formulaName != null and formulaName != ''">
+                and FORMULA_NAME = #{formulaName}
+            </if>
+            <if test="formulaString != null and formulaString != ''">
+                and FORMULA_STRING = #{formulaString}
+            </if>
+            <if test="violationTypeId != null">
+                and VIOLATION_TYPE_ID = #{violationTypeId}
+            </if>
+            <if test="insertUsername != null and insertUsername != ''">
+                and INSERT_USERNAME = #{insertUsername}
+            </if>
+            <if test="insertTime != null">
+                and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+            </if>
+            <if test="updateUsername != null and updateUsername != ''">
+                and UPDATE_USERNAME = #{updateUsername}
+            </if>
+            <if test="updateTime != null">
+                and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+            </if>
+            <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+                and INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+            </if>
+        </where>
+    </sql>
+    <sql id="whereLike">
+        <where>
+            <if test="formulaId != null">
+                and FORMULA_ID = #{formulaId}
+            </if>
+            <if test="taxId != null">
+                and TAX_ID = #{taxId}
+            </if>
+            <if test="childrenConditionFormula != null and childrenConditionFormula != ''">
+                and CHILDREN_CONDITION_FORMULA LIKE '%${childrenConditionFormula}%'
+            </if>
+            <if test="childrenConditionJudge != null and childrenConditionJudge != ''">
+                and CHILDREN_CONDITION_JUDGE LIKE '%${childrenConditionJudge}%'
+            </if>
+            <if test="formulaName != null and formulaName != ''">
+                and FORMULA_NAME LIKE '%${formulaName}%'
+            </if>
+            <if test="formulaString != null and formulaString != ''">
+                and FORMULA_STRING LIKE '%${formulaString}%'
+            </if>
+            <if test="violationTypeId != null">
+                and VIOLATION_TYPE_ID = #{violationTypeId}
+            </if>
+            <if test="insertUsername != null and insertUsername != ''">
+                and INSERT_USERNAME LIKE '%${insertUsername}%'
+            </if>
+            <if test="insertTime != null">
+                and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+            </if>
+            <if test="updateUsername != null and updateUsername != ''">
+                and UPDATE_USERNAME LIKE '%${updateUsername}%'
+            </if>
+            <if test="updateTime != null">
+                and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+            </if>
+            <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+                and INSERT_UPDATE_REMARK LIKE '%${insertUpdateRemark}%'
+            </if>
+        </where>
+    </sql>
+    <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
+        delete
+        from BMSTRUCK_FORMULA
+        where FORMULA_ID = #{formulaId,jdbcType=DECIMAL}
+    </delete>
+    <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
+        delete from BMSTRUCK_FORMULA
+        where 1!=1
+        <if test="taxId != null">
+            or TAX_ID = #{taxId}
+        </if>
+        <if test="childrenConditionFormula != null and childrenConditionFormula != ''">
+            or CHILDREN_CONDITION_FORMULA = #{childrenConditionFormula}
+        </if>
+        <if test="childrenConditionJudge != null and childrenConditionJudge != ''">
+            or CHILDREN_CONDITION_JUDGE = #{childrenConditionJudge}
+        </if>
+        <if test="formulaName != null and formulaName != ''">
+            or FORMULA_NAME = #{formulaName}
+        </if>
+        <if test="formulaString != null and formulaString != ''">
+            or FORMULA_STRING = #{formulaString}
+        </if>
+        <if test="violationTypeId != null">
+            or VIOLATION_TYPE_ID = #{violationTypeId}
+        </if>
+        <if test="insertUsername != null and insertUsername != ''">
+            or INSERT_USERNAME = #{insertUsername}
+        </if>
+        <if test="insertTime != null">
+            or TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = '#{insertTime}'
+        </if>
+        <if test="updateUsername != null and updateUsername != ''">
+            or UPDATE_USERNAME = #{updateUsername}
+        </if>
+        <if test="updateTime != null">
+            or TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = '#{updateTime}'
+        </if>
+        <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+            or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+        </if>
+    </delete>
+    <insert id="insert" parameterType="com.steerinfo.dil.model.BmstruckFormula">
+        insert into BMSTRUCK_FORMULA (FORMULA_ID, TAX_ID, CHILDREN_CONDITION_FORMULA,
+                                      CHILDREN_CONDITION_JUDGE, FORMULA_NAME, FORMULA_STRING,
+                                      VIOLATION_TYPE_ID, INSERT_USERNAME, INSERT_TIME,
+                                      UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK)
+        values (#{formulaId,jdbcType=DECIMAL}, #{taxId,jdbcType=DECIMAL}, #{childrenConditionFormula,jdbcType=VARCHAR},
+                #{childrenConditionJudge,jdbcType=VARCHAR}, #{formulaName,jdbcType=VARCHAR},
+                #{formulaString,jdbcType=VARCHAR},
+                #{violationTypeId,jdbcType=DECIMAL}, #{insertUsername,jdbcType=VARCHAR},
+                #{insertTime,jdbcType=TIMESTAMP},
+                #{updateUsername,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP},
+                #{insertUpdateRemark,jdbcType=VARCHAR})
+    </insert>
+    <insert id="insertSelective" parameterType="com.steerinfo.dil.model.BmstruckFormula">
+        insert into BMSTRUCK_FORMULA
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="formulaId != null">
+                FORMULA_ID,
+            </if>
+            <if test="taxId != null">
+                TAX_ID,
+            </if>
+            <if test="childrenConditionFormula != null">
+                CHILDREN_CONDITION_FORMULA,
+            </if>
+            <if test="childrenConditionJudge != null">
+                CHILDREN_CONDITION_JUDGE,
+            </if>
+            <if test="formulaName != null">
+                FORMULA_NAME,
+            </if>
+            <if test="formulaString != null">
+                FORMULA_STRING,
+            </if>
+            <if test="violationTypeId != null">
+                VIOLATION_TYPE_ID,
+            </if>
+            <if test="insertUsername != null">
+                INSERT_USERNAME,
+            </if>
+            <if test="insertTime != null">
+                INSERT_TIME,
+            </if>
+            <if test="updateUsername != null">
+                UPDATE_USERNAME,
+            </if>
+            <if test="updateTime != null">
+                UPDATE_TIME,
+            </if>
+            <if test="insertUpdateRemark != null">
+                INSERT_UPDATE_REMARK,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="formulaId != null">
+                #{formulaId,jdbcType=DECIMAL},
+            </if>
+            <if test="taxId != null">
+                #{taxId,jdbcType=DECIMAL},
+            </if>
+            <if test="childrenConditionFormula != null">
+                #{childrenConditionFormula,jdbcType=VARCHAR},
+            </if>
+            <if test="childrenConditionJudge != null">
+                #{childrenConditionJudge,jdbcType=VARCHAR},
+            </if>
+            <if test="formulaName != null">
+                #{formulaName,jdbcType=VARCHAR},
+            </if>
+            <if test="formulaString != null">
+                #{formulaString,jdbcType=VARCHAR},
+            </if>
+            <if test="violationTypeId != null">
+                #{violationTypeId,jdbcType=DECIMAL},
+            </if>
+            <if test="insertUsername != null">
+                #{insertUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="insertTime != null">
+                #{insertTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUsername != null">
+                #{updateUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUpdateRemark != null">
+                #{insertUpdateRemark,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKey" parameterType="com.steerinfo.dil.model.BmstruckFormula">
+        update BMSTRUCK_FORMULA
+        set TAX_ID                     = #{taxId,jdbcType=DECIMAL},
+            CHILDREN_CONDITION_FORMULA = #{childrenConditionFormula,jdbcType=VARCHAR},
+            CHILDREN_CONDITION_JUDGE   = #{childrenConditionJudge,jdbcType=VARCHAR},
+            FORMULA_NAME               = #{formulaName,jdbcType=VARCHAR},
+            FORMULA_STRING             = #{formulaString,jdbcType=VARCHAR},
+            VIOLATION_TYPE_ID          = #{violationTypeId,jdbcType=DECIMAL},
+            INSERT_USERNAME            = #{insertUsername,jdbcType=VARCHAR},
+            INSERT_TIME                = #{insertTime,jdbcType=TIMESTAMP},
+            UPDATE_USERNAME            = #{updateUsername,jdbcType=VARCHAR},
+            UPDATE_TIME                = #{updateTime,jdbcType=TIMESTAMP},
+            INSERT_UPDATE_REMARK       = #{insertUpdateRemark,jdbcType=VARCHAR}
+        where FORMULA_ID = #{formulaId,jdbcType=DECIMAL}
+    </update>
+    <update id="updateByPrimaryKeySelective" parameterType="com.steerinfo.dil.model.BmstruckFormula">
+        update BMSTRUCK_FORMULA
+        <set>
+            <if test="taxId != null">
+                TAX_ID = #{taxId,jdbcType=DECIMAL},
+            </if>
+            <if test="childrenConditionFormula != null">
+                CHILDREN_CONDITION_FORMULA = #{childrenConditionFormula,jdbcType=VARCHAR},
+            </if>
+            <if test="childrenConditionJudge != null">
+                CHILDREN_CONDITION_JUDGE = #{childrenConditionJudge,jdbcType=VARCHAR},
+            </if>
+            <if test="formulaName != null">
+                FORMULA_NAME = #{formulaName,jdbcType=VARCHAR},
+            </if>
+            <if test="formulaString != null">
+                FORMULA_STRING = #{formulaString,jdbcType=VARCHAR},
+            </if>
+            <if test="violationTypeId != null">
+                VIOLATION_TYPE_ID = #{violationTypeId,jdbcType=DECIMAL},
+            </if>
+            <if test="insertUsername != null">
+                INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="insertTime != null">
+                INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUsername != null">
+                UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="insertUpdateRemark != null">
+                INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where FORMULA_ID = #{formulaId,jdbcType=DECIMAL}
+    </update>
+    <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
+        <include refid="select"/>
+        where FORMULA_ID = #{formulaId,jdbcType=DECIMAL}
+    </select>
+    <select id="selectByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        <include refid="select"/>
+        <include refid="where"/>
+    </select>
+    <select id="selectLikeByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        <include refid="select"/>
+        <include refid="whereLike"/>
+    </select>
+    <insert id="batchInsert" parameterType="java.util.List">
+        insert into BMSTRUCK_FORMULA
+        (FORMULA_ID,
+        TAX_ID, CHILDREN_CONDITION_FORMULA,
+        CHILDREN_CONDITION_JUDGE, FORMULA_NAME,
+        FORMULA_STRING, VIOLATION_TYPE_ID,
+        INSERT_USERNAME, INSERT_TIME,
+        UPDATE_USERNAME, UPDATE_TIME,
+        INSERT_UPDATE_REMARK)
+        ( <foreach collection="list" item="item" separator="union all">
+        select
+        #{item.formulaId,jdbcType=DECIMAL},
+        #{item.taxId,jdbcType=DECIMAL}, #{item.childrenConditionFormula,jdbcType=VARCHAR},
+        #{item.childrenConditionJudge,jdbcType=VARCHAR}, #{item.formulaName,jdbcType=VARCHAR},
+        #{item.formulaString,jdbcType=VARCHAR}, #{item.violationTypeId,jdbcType=DECIMAL},
+        #{item.insertUsername,jdbcType=VARCHAR}, #{item.insertTime,jdbcType=TIMESTAMP},
+        #{item.updateUsername,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP},
+        #{item.insertUpdateRemark,jdbcType=VARCHAR} from dual
+    </foreach> )
+    </insert>
+    <update id="batchUpdate" parameterType="java.util.List">
+        update BMSTRUCK_FORMULA
+        set
+        FORMULA_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.formulaId,jdbcType=DECIMAL}
+        </foreach>
+        ,TAX_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.taxId,jdbcType=DECIMAL}
+        </foreach>
+        ,CHILDREN_CONDITION_FORMULA=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.childrenConditionFormula,jdbcType=VARCHAR}
+        </foreach>
+        ,CHILDREN_CONDITION_JUDGE=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.childrenConditionJudge,jdbcType=VARCHAR}
+        </foreach>
+        ,FORMULA_NAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.formulaName,jdbcType=VARCHAR}
+        </foreach>
+        ,FORMULA_STRING=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.formulaString,jdbcType=VARCHAR}
+        </foreach>
+        ,VIOLATION_TYPE_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.violationTypeId,jdbcType=DECIMAL}
+        </foreach>
+        ,INSERT_USERNAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
+        </foreach>
+        ,INSERT_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,UPDATE_USERNAME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
+        </foreach>
+        ,UPDATE_TIME=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
+        </foreach>
+        ,INSERT_UPDATE_REMARK=
+        <foreach collection="list" item="item" index="index" separator=" " open="case FORMULA_ID" close="end">
+            when #{item.formulaId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
+        </foreach>
+        where FORMULA_ID in
+        <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
+            #{item.formulaId,jdbcType=DECIMAL}
+        </foreach>
+    </update>
+    <delete id="batchDelete" parameterType="java.util.List">
+        delete from BMSTRUCK_FORMULA
+        where FORMULA_ID in
+        <foreach collection="list" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+    <!-- 友情提示!!!-->
+    <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
+    <!-- 查询所有价格日期 -->
+    <select id="selectPriceDate" resultType="java.util.Map">
+        SELECT PRICE_DATE  as "priceDate",
+               PRICE_ID    as "priceId",
+               PRICE_VALUE as "priceValue"
+        FROM AMS_CONTRACT_TRANSPORT_PRICE
+        ORDER BY PRICE_DATE ASC
+    </select>
+
+
+    <!-- 查询装船日期 -->
+    <select id="selectLoadShipDate" parameterType="DECIMAL" resultType="java.util.Map">
+        SELECT tlsr.RESULT_LOAD_SHIP_DATE as "loadShipDate",
+               twqr.RESULT_SHIPMENT_RATIO as "resultShipmentRatio"
+        FROM TMSSHIP_LOAD_SHIP_RESULT tlsr
+                 LEFT JOIN TMSSHIP_TOTAL_RESULT ttr
+                           ON ttr.RESULT_ID = tlsr.TOTAL_RESULT_ID
+                 LEFT JOIN OMSSHIP_INSTRUCTIONS_CAPACITY oic
+                           ON oic.INSTRUCTIONS_CAPACITY_ID = ttr.ORDER_ID
+                 LEFT JOIN OMSSHIP_SHIPMENT_INSTRUCTIONS osi
+                           ON osi.SHIPMENT_INSTRUCTIONS_ID = oic.INSTRUCTIONS_ID
+                 LEFT JOIN DIL_BATCH db
+                           ON db.BATCH_ID = osi.BATCH_ID
+                 LEFT JOIN TMSSHIP_WATER_QUALITY_RESULT twqr
+                           ON ttr.RESULT_ID = twqr.TOTAL_RESULT_ID
+        WHERE db.BATCH_ID = #{batchId}
+        ORDER BY tlsr.RESULT_LOAD_SHIP_DATE ASC
+    </select>
+
+    <!-- 计算水分质检费 -->
+    <select id="selectWaterFees" resultType="java.lang.Double" parameterType="DECIMAL">
+        SELECT SUM(twqr.RESULT_INSPECTION_FEES) as "resultInspectionFees",
+               db.BATCH_ID                      as "batchId"
+        FROM DIL_BATCH db
+                 LEFT JOIN OMSSHIP_SHIPMENT_INSTRUCTIONS osi
+                           ON db.BATCH_ID = osi.BATCH_ID
+                 LEFT JOIN OMSSHIP_INSTRUCTIONS_CAPACITY oic
+                           ON oic.INSTRUCTIONS_ID = osi.SHIPMENT_INSTRUCTIONS_ID
+                 LEFT JOIN TMSSHIP_TOTAL_RESULT ttr
+                           ON ttr.ORDER_ID = oic.INSTRUCTIONS_CAPACITY_ID
+                 LEFT JOIN TMSSHIP_WATER_QUALITY_RESULT twqr
+                           ON ttr.RESULT_ID = twqr.TOTAL_RESULT_ID
+        WHERE db.BATCH_ID = #{batchId}
+        GROUP BY db.BATCH_ID
+    </select>
+
+    <!-- 获取到厂湿吨 -->
+    <select id="selectArrivalWeight" resultType="DECIMAL" parameterType="DECIMAL">
+        SELECT twr.RESULT_NET_WEIGHT as "resultNetWeight"
+        FROM TMSTRUCK_WEIGHT_RESULT twr
+                 LEFT JOIN TMSTRUCK_TOTAL_RESULT ttr
+                           ON ttr.RESULT_TOTAL_ID = twr.RESULT_TOTAL_ID
+        WHERE ttr.RESULT_TOTAL_ID = #{resultTotalId}
+    </select>
+    <!-- 查询计算公式 -->
+    <select id="selectFormula" resultType="java.lang.String" parameterType="DECIMAL">
+        SELECT bf.FORMULA_STRING
+        FROM BMSTRUCK_FORMULA bf
+        WHERE bf.FORMULA_ID = #{formulaId}
+    </select>
+
+    <!-- 查询计算公式 -->
+    <select id="selectAnyFormula" resultType="java.util.Map" parameterType="DECIMAL">
+        SELECT
+               bf.FORMULA_NAME as "formula_name",
+               bf.FORMULA_STRING as "formula_string"
+        FROM BMSTRUCK_FORMULA bf
+        WHERE bf.FORMULA_ID = #{formulaId}
+    </select>
+
+
+    <!-- 通过出厂实绩查询到总实绩id -->
+    <select id="selectTotalId" parameterType="DECIMAL" resultType="DECIMAL">
+        SELECT RESULT_TOTAL_ID as "resultTotalId"
+        FROM TMSTRUCK_LEAVE_FACTORY_RESULT
+        WHERE RESULT_ID = #{resultId}
+    </select>
+
+    <!-- 根据实绩获取到批次id -->
+    <select id="selectBatchId" parameterType="DECIMAL" resultType="DECIMAL">
+        SELECT db.BATCH_ID
+        FROM DIL_BATCH db
+                 LEFT JOIN AMSTRUCK_PURPLAN ap
+                           ON db.BATCH_ID = ap.BATCH_ID
+                 LEFT JOIN OMSTRUCK_ORDER oo
+                           ON ap.PLAN_ID = oo.ORDER_PLAN_ID
+                 LEFT JOIN TMSTRUCK_TOTAL_RESULT ttr
+                           ON ttr.ORDER_ID = oo.ORDER_ID
+        WHERE ttr.RESULT_TOTAL_ID = #{resultTotalId}
+    </select>
+
+    <select id="selectPurchaseId" resultType="DECIMAL" parameterType="DECIMAL">
+        SELECT apo.PURCHASE_ORDER_ID as "purchaseOrderId"
+        FROM AMS_PURCHASE_ORDER apo
+        WHERE apo.BATCH_ID = #{batchId}
+    </select>
+
+    <!--查询计算因子-->
+    <select id="getCalData" parameterType="DECIMAL" resultType="java.util.Map">
+        SELECT *
+        FROM (
+                 SELECT SUM(tlsr.RESULT_ACTUAL_INSTALLATIONS) as "shipWeight",
+                        SUM(twqr.RESULT_MOISTURE_CONTENT)     as "moistureContent",
+                        COUNT(twqr.RESULT_ID)                 as "count",
+                        db.BATCH_ID
+                 FROM TMSSHIP_WATER_QUALITY_RESULT twqr
+                          LEFT JOIN TMSSHIP_TOTAL_RESULT shiptr
+                                    ON shiptr.RESULT_ID = twqr.TOTAL_RESULT_ID
+                          LEFT JOIN TMSSHIP_LOAD_SHIP_RESULT tlsr
+                                    ON shiptr.RESULT_ID = tlsr.TOTAL_RESULT_ID
+                          LEFT JOIN OMSSHIP_INSTRUCTIONS_CAPACITY oic
+                                    ON oic.INSTRUCTIONS_CAPACITY_ID = shiptr.ORDER_ID
+                          LEFT JOIN OMSSHIP_SHIPMENT_INSTRUCTIONS osi
+                                    ON osi.SHIPMENT_INSTRUCTIONS_ID = oic.INSTRUCTIONS_ID
+                          LEFT JOIN DIL_BATCH db
+                                    ON db.BATCH_ID = osi.BATCH_ID
+                 WHERE db.BATCH_ID = #{batchId}
+                 GROUP BY db.BATCH_ID
+             )
+    </select>
+
+    <!-- 查询到厂总重量 -->
+    <select id="getArrivalWeight" parameterType="DECIMAL" resultType="DECIMAL">
+        SELECT *
+        FROM (
+                 SELECT SUM(twr.RESULT_NET_WEIGHT) as "arrivalWeight"
+                 FROM TMSTRUCK_WEIGHT_RESULT twr
+                          LEFT JOIN TMSTRUCK_TOTAL_RESULT trucktr
+                                    ON trucktr.RESULT_TOTAL_ID = twr.RESULT_TOTAL_ID
+                          LEFT JOIN OMSTRUCK_ORDER oo
+                                    ON oo.ORDER_ID = trucktr.ORDER_ID
+                          LEFT JOIN AMSTRUCK_PURPLAN ap
+                                    ON oo.ORDER_PLAN_ID = ap.PLAN_ID
+                          LEFT JOIN DIL_BATCH db
+                                    ON ap.BATCH_ID = db.BATCH_ID
+                 WHERE db.BATCH_ID = #{batchId}
+                 GROUP BY db.BATCH_ID
+             )
+    </select>
+
+    <!--查询单价-->
+    <select id="getUnitPrice" parameterType="DECIMAL" resultType="DECIMAL">
+        SELECT adn.PURCHASE_CONTRACT_UNIT_PRICE as "unitPrice"
+        FROM DIL_BATCH db
+                 LEFT JOIN AMSSHIP_DELIVERY_NOTICE adn
+                           ON adn.BATCH_ID = db.BATCH_ID
+        WHERE db.BATCH_ID = #{batchId}
+    </select>
+</mapper>

+ 80 - 0
src/main/resources/log4j.properties

@@ -0,0 +1,80 @@
+## LOG4J配置
+log4j.rootCategory=INFO, stdout,file, RUNNING,errorfile
+## 控制台输出
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n
+
+## root日志输出到文件
+log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.file.file=/logsdata/logs/springboot-log4j-root.log
+log4j.appender.file.DatePattern='.'yyyy-MM-dd
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n
+
+## 按不同package进行输出
+## com.steer包下的日志配置
+log4j.category.market=DEBUG, steerfile
+log4j.category.com.hnshituo=DEBUG, steerfile
+#log4j.category.com.steer=${logging.level.com.steer}, steerfile
+log4j.category.com.steer=DEBUG, steerfile
+# com.steer下的日志输出
+log4j.appender.steerfile=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.steerfile.file=/logsdata/logs/springboot-log4j-steer.log
+log4j.appender.steerfile.DatePattern='.'yyyy-MM-dd
+log4j.appender.steerfile.layout=org.apache.log4j.PatternLayout
+#log4j.appender.steerfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
+log4j.appender.steerfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n
+
+
+## ERROR级别输出到特定的日志文件中
+log4j.logger.error=errorfile
+## 异常日志####
+log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.errorfile.file=/logs/exception/exc.log
+log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
+log4j.appender.errorfile.Threshold = ERROR
+log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
+#log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
+log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n
+
+### 运行日志 ###
+log4j.appender.RUNNING = org.apache.log4j.DailyRollingFileAppender
+log4j.appender.RUNNING.File =/logs/log/running.log
+log4j.appender.RUNNING.Append = true
+log4j.appender.RUNNING.Threshold = INFO
+log4j.appender.RUNNING.DatePattern='.'yyyy-MM-dd.
+log4j.appender.RUNNING.layout = org.apache.log4j.PatternLayout
+log4j.appender.RUNNING.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n
+
+### 指定类###
+log4j.logger.com.steer.rbac.sysdebuglog.service.DebugLogRecord = DEBUG,DEB
+## 调试日志 ###
+log4j.appender.DEB = org.apache.log4j.DailyRollingFileAppender
+log4j.appender.DEB.File = /logs/debug/debug.log
+log4j.appender.DEB.Append = true
+log4j.appender.DEB.Threshold = DEBUG 
+log4j.appender.DEB.DatePattern='.'yyyy-MM-dd
+log4j.appender.DEB.layout = org.apache.log4j.PatternLayout
+log4j.appender.DEB.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n
+####[%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
+
+#### 业务日志###
+log4j.logger.com.steer.rbac.sysoperlog.service.BizLogRecord = INFO,BIZ
+log4j.appender.BIZ = org.apache.log4j.DailyRollingFileAppender
+log4j.appender.BIZ.File = /logs/business/biz.log
+log4j.appender.BIZ.Append = true
+log4j.appender.BIZ.Threshold = INFO
+log4j.appender.BIZ.DatePattern='.'yyyy-MM-dd
+log4j.appender.BIZ.layout = org.apache.log4j.PatternLayout
+log4j.appender.BIZ.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n
+#
+#
+#### 资源日志###
+#log4j.appender.ENV = org.apache.log4j.DailyRollingFileAppender
+#log4j.appender.ENV.File = ../logs/env/env.log
+#log4j.appender.ENV.Append = true
+#log4j.appender.ENV.Threshold = INFO
+#log4j.appender.ENV.DatePattern='.'yyyy-MM-dd
+#1420.3og4j.appender.ENV.layout = org.apache.log4j.PatternLayout
+#log4j.appender.ENV.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n

+ 4 - 0
src/main/resources/message.properties

@@ -0,0 +1,4 @@
+succeed=操作成功
+failed=操作失败
+unreg=帐号或手机号码未注册
+passerr=密码错误