Browse Source

first commit

HUJIANGUO 3 years ago
commit
4436883344
29 changed files with 2740 additions and 0 deletions
  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. 108 0
      src/main/java/com/steerinfo/dil/controller/BmstruckDetailsOrderController.java
  7. 19 0
      src/main/java/com/steerinfo/dil/feign/ColumnDataFeign.java
  8. 26 0
      src/main/java/com/steerinfo/dil/interceptors/MyLocaleChangeInterceptor.java
  9. 66 0
      src/main/java/com/steerinfo/dil/mapper/BmstruckDetailsOrderMapper.java
  10. 17 0
      src/main/java/com/steerinfo/dil/mapper/BmstruckFormulaMapper.java
  11. 213 0
      src/main/java/com/steerinfo/dil/model/BmstruckDetailsOrder.java
  12. 213 0
      src/main/java/com/steerinfo/dil/model/BmstruckFormula.java
  13. 68 0
      src/main/java/com/steerinfo/dil/service/IBmstruckDetailsOrderService.java
  14. 19 0
      src/main/java/com/steerinfo/dil/service/IBmstruckFormulaService.java
  15. 307 0
      src/main/java/com/steerinfo/dil/service/impl/BmstruckDetailsOrderServiceImpl.java
  16. 31 0
      src/main/java/com/steerinfo/dil/service/impl/BmstruckFormulaServiceImpl.java
  17. 70 0
      src/main/java/com/steerinfo/dil/util/BaseRESTfulController.java
  18. 38 0
      src/main/java/com/steerinfo/dil/util/ColumnDataUtil.java
  19. 53 0
      src/main/java/com/steerinfo/dil/util/NoUtil.java
  20. 33 0
      src/main/java/com/steerinfo/dil/util/PageListAdd.java
  21. 11 0
      src/main/java/com/steerinfo/dil/util/util.java
  22. 9 0
      src/main/resources/application-dev.yml
  23. 8 0
      src/main/resources/application-prod.yml
  24. 0 0
      src/main/resources/application.yml
  25. 50 0
      src/main/resources/bootstrap.yml
  26. 638 0
      src/main/resources/com/steerinfo/dil/mapper/BmstruckDetailsOrderMapper.xml
  27. 408 0
      src/main/resources/com/steerinfo/dil/mapper/BmstruckFormulaMapper.xml
  28. 80 0
      src/main/resources/log4j.properties
  29. 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>BMSTRUCK_FORMULA</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) {
+    }
+}

+ 108 - 0
src/main/java/com/steerinfo/dil/controller/BmstruckDetailsOrderController.java

@@ -0,0 +1,108 @@
+package com.steerinfo.dil.controller;
+
+import com.github.pagehelper.PageHelper;
+import com.steerinfo.dil.service.impl.BmstruckDetailsOrderServiceImpl;
+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 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.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/24 17:29
+ * @Version:V2.0
+ */
+@RestController
+@RequestMapping("/${api.version}/bmstruckdetailsorder")
+public class BmstruckDetailsOrderController extends BaseRESTfulController {
+
+    @Autowired
+    BmstruckDetailsOrderServiceImpl bmstruckDetailsOrderService;
+    @Autowired
+    ColumnDataUtil columnDataUtil;
+
+    /**
+     * 展示汽运详单信息
+     * @param mapVal
+     * @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 = "140", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getTruckDetailsOrderList")
+    public RESTfulResult getTruckDetailsOrderList(@RequestBody(required = false) Map<String,Object> mapVal,
+                                                  Integer pageNum,
+                                                  Integer pageSize,
+                                                  Integer apiId) {
+        List<Map<String, Object>> list = bmstruckDetailsOrderService.getTruckDetailsOrderList(mapVal);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmstruckDetailsOrderService.getTruckDetailsOrderList(mapVal);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 展示汽运实绩信息
+     * @param mapVal
+     * @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 = "142", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getTruckResultList")
+    public RESTfulResult getTruckResultList(@RequestBody(required = false) Map<String,Object> mapVal,
+                                            Integer pageNum,
+                                            Integer pageSize,
+                                            Integer apiId,
+                                            BigDecimal orderId) {
+        if (mapVal == null) {
+            mapVal = new HashMap<>();
+        }
+        mapVal.put("orderId",orderId);
+        List<Map<String, Object>> list = bmstruckDetailsOrderService.getTruckResultList(mapVal);
+        PageHelper.startPage(pageNum, pageSize);
+        //分页查询数据
+        List<Map<String, Object>> columnList = bmstruckDetailsOrderService.getTruckResultList(mapVal);
+        PageListAdd data = columnDataUtil.tableColumnData(apiId, list, columnList);
+        return success(data);
+    }
+
+    /**
+     * 新增详单
+     * @param orderId
+     * @return
+     */
+    @ApiModelProperty(value = "新增详单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderId", value = "汽运运单id", required = false, dataType = "BigDecimal"),
+    })
+    @PostMapping("/addDetailsOrder/{orderId}")
+    public RESTfulResult addDetailsOrder(@PathVariable("orderId") BigDecimal orderId) throws Exception {
+        int code = bmstruckDetailsOrderService.insertSelective(orderId);
+        return success(code);
+    }
+}

+ 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.0.106: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();
+    }
+
+}

+ 66 - 0
src/main/java/com/steerinfo/dil/mapper/BmstruckDetailsOrderMapper.java

@@ -0,0 +1,66 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.BmstruckDetailsOrder;
+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 BmstruckDetailsOrderMapper extends IBaseMapper<BmstruckDetailsOrder, BigDecimal> {
+
+    /**
+     * 展示汽运详单
+     * @param mapVal
+     * @return
+     */
+    List<Map<String,Object>> getTruckDetailsOrderList(Map<String,Object> mapVal);
+
+    /**
+     * 新增汽运详单
+     * @param bmstruckDetailsOrder
+     * @return
+     */
+    int insertSelective(BmstruckDetailsOrder bmstruckDetailsOrder);
+
+    /**
+     * 查询最大id
+     * @return
+     */
+    BigDecimal selectMaxId();
+
+    /**
+     * 展示汽运实绩列表
+     * @param mapVal
+     * @return
+     */
+    List<Map<String, Object>> getTruckResultList(Map<String, Object> mapVal);
+
+    /**
+     * 查询计算因子
+     * @param orderId
+     * @return
+     */
+    BigDecimal getFormulaMembers(BigDecimal orderId);
+
+    /**
+     * 得到价格id
+     * @return
+     */
+    List<Map<String, Object>> getPriceId();
+
+    /**
+     * 得到价格
+     * @return
+     */
+    BigDecimal getPriceValue(BigDecimal priceId);
+
+    /**
+     * 得到到厂湿重
+     * @param orderId
+     * @return
+     */
+    BigDecimal getNetWeight(BigDecimal orderId);
+}

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

@@ -0,0 +1,17 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.BmstruckFormula;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import java.math.*;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BmstruckFormulaMapper extends IBaseMapper<BmstruckFormula, BigDecimal> {
+
+    /**
+     * 查询汽运计费公式
+     * @param formulaId
+     * @return
+     */
+    String getTruckFormula(BigDecimal formulaId);
+}

+ 213 - 0
src/main/java/com/steerinfo/dil/model/BmstruckDetailsOrder.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 BmstruckDetailsOrder 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;
+
+    /**
+     * 运输订单ID(ORDER_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="运输订单ID",required=false)
+    private BigDecimal orderId;
+
+    /**
+     * 详单号(DETAILS_NO,VARCHAR,20)
+     */
+    @ApiModelProperty(value="详单号",required=false)
+    private String detailsNo;
+
+    /**
+     * 详单时间(DETAILS_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="详单时间",required=false)
+    private Date detailsTime;
+
+    /**
+     * 单价ID(PRICE_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="单价ID",required=false)
+    private BigDecimal priceId;
+
+    /**
+     * 金额(保留两位小数)(DETAILS_AMOUNT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="金额(保留两位小数)",required=false)
+    private BigDecimal detailsAmount;
+
+    /**
+     * 记录创建人(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 BigDecimal getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(BigDecimal orderId) {
+        this.orderId = orderId;
+    }
+
+    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 BigDecimal getPriceId() {
+        return priceId;
+    }
+
+    public void setPriceId(BigDecimal priceId) {
+        this.priceId = priceId;
+    }
+
+    public BigDecimal getDetailsAmount() {
+        return detailsAmount;
+    }
+
+    public void setDetailsAmount(BigDecimal detailsAmount) {
+        this.detailsAmount = detailsAmount;
+    }
+
+    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(", orderId=").append(orderId);
+        sb.append(", detailsNo=").append(detailsNo);
+        sb.append(", detailsTime=").append(detailsTime);
+        sb.append(", priceId=").append(priceId);
+        sb.append(", detailsAmount=").append(detailsAmount);
+        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();
+    }
+}

+ 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();
+    }
+}

+ 68 - 0
src/main/java/com/steerinfo/dil/service/IBmstruckDetailsOrderService.java

@@ -0,0 +1,68 @@
+package com.steerinfo.dil.service;
+
+import com.steerinfo.dil.model.BmstruckDetailsOrder;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/24 17:34
+ * @Version:V2.0
+ */
+public interface IBmstruckDetailsOrderService {
+    /**
+     * 展示汽运详单
+     * @param mapVal
+     * @return
+     */
+    List<Map<String,Object>> getTruckDetailsOrderList(Map<String,Object> mapVal);
+
+    /**
+     * 新增汽运详单
+     * @param orderId
+     * @return
+     */
+    int insertSelective(BigDecimal orderId) throws Exception;
+
+    /**
+     * 查询最大id
+     * @return
+     */
+    BigDecimal selectMaxId();
+
+    /**
+     * 展示汽运实绩
+     * @param mapVal
+     * @return
+     */
+    List<Map<String, Object>> getTruckResultList(Map<String, Object> mapVal);
+
+    /**
+     * 查询计算因子
+     * @param orderId
+     * @return
+     */
+    BigDecimal getFormulaMembers(BigDecimal orderId);
+
+    /**
+     * 得到价格id
+     * @return
+     */
+    List<Map<String, Object>> getPriceId();
+
+    /**
+     * 得到价格
+     * @return
+     */
+    BigDecimal getPriceValue(BigDecimal priceId);
+
+    /**
+     * 得到到厂湿重
+     * @param orderId
+     * @return
+     */
+    BigDecimal getNetWeight(BigDecimal orderId);
+}

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

@@ -0,0 +1,19 @@
+package com.steerinfo.dil.service;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/24 17:40
+ * @Version:V2.0
+ */
+public interface IBmstruckFormulaService {
+
+    /**
+     * 查询汽运计费公式
+     * @param formulaId
+     * @return
+     */
+    String getTruckFormula(BigDecimal formulaId);
+}

+ 307 - 0
src/main/java/com/steerinfo/dil/service/impl/BmstruckDetailsOrderServiceImpl.java

@@ -0,0 +1,307 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.BmstruckDetailsOrderMapper;
+import com.steerinfo.dil.model.BmstruckDetailsOrder;
+import com.steerinfo.dil.service.IBmstruckDetailsOrderService;
+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;
+import java.util.Stack;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/24 17:34
+ * @Version:V2.0
+ */
+@Service
+public class BmstruckDetailsOrderServiceImpl implements IBmstruckDetailsOrderService {
+
+    @Autowired
+    BmstruckDetailsOrderMapper bmstruckDetailsOrderMapper;
+    @Autowired
+    BmstruckFormulaServiceImpl bmstruckFormulaService;
+    @Autowired
+    NoUtil noUtil;
+
+    /**
+     * 展示汽运详单列表
+     * @param mapVal
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getTruckDetailsOrderList(Map<String, Object> mapVal) {
+        return bmstruckDetailsOrderMapper.getTruckDetailsOrderList(mapVal);
+    }
+
+    /**
+     * 新增详单
+     * @param orderId
+     * @return
+     */
+    @Override
+    public int insertSelective(BigDecimal orderId) throws Exception {
+        // 得到最大id
+        BigDecimal detailsId = selectMaxId();
+        BigDecimal purchaseOrderId = getFormulaMembers(orderId);
+        String detailsNo = noUtil.setResultNo("QYXD", detailsId);
+        List<Map<String, Object>> list = getPriceId();
+        Map<String, Object> map = list.get(0);
+        BigDecimal priceId = (BigDecimal) map.get("priceId");
+        BigDecimal detailsAmountOld = generateTruckFees(orderId);
+        Double amount = detailsAmountOld.doubleValue();
+        DecimalFormat df = new DecimalFormat("0.00");
+        String format = df.format(amount);
+        BigDecimal detailsAmount = new BigDecimal(format);
+        BmstruckDetailsOrder bmstruckDetailsOrder = new BmstruckDetailsOrder();
+        bmstruckDetailsOrder.setDetailsId(detailsId);
+        bmstruckDetailsOrder.setOrderId(orderId);
+        bmstruckDetailsOrder.setPurchaseOrderId(purchaseOrderId);
+        bmstruckDetailsOrder.setDetailsNo(detailsNo);
+        bmstruckDetailsOrder.setPriceId(priceId);
+        bmstruckDetailsOrder.setDetailsAmount(detailsAmount);
+        bmstruckDetailsOrder.setDetailsTime(new Date());
+        // 设置常规字段
+        bmstruckDetailsOrder.setInsertTime(new Date());
+        bmstruckDetailsOrder.setUpdateTime(new Date());
+        bmstruckDetailsOrder.setInsertUsername("admin");
+        bmstruckDetailsOrder.setUpdateUsername("admin");
+        bmstruckDetailsOrder.setInsertUpdateRemark("无");
+        return bmstruckDetailsOrderMapper.insertSelective(bmstruckDetailsOrder);
+    }
+
+    /**
+     * 查询最大id
+     * @return
+     */
+    @Override
+    public BigDecimal selectMaxId() {
+        BigDecimal detailsId = bmstruckDetailsOrderMapper.selectMaxId();
+        return detailsId == null ? new BigDecimal(1) : new BigDecimal(1 + detailsId.intValue());
+    }
+
+    /**
+     * 展示汽运实绩列表
+     * @param mapVal
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getTruckResultList(Map<String, Object> mapVal) {
+        return bmstruckDetailsOrderMapper.getTruckResultList(mapVal);
+    }
+
+    /**
+     * 得到计算因子
+     * @param orderId
+     * @return
+     */
+    @Override
+    public BigDecimal getFormulaMembers(BigDecimal orderId) {
+        return bmstruckDetailsOrderMapper.getFormulaMembers(orderId);
+    }
+
+    /**
+     * 得到价格id
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getPriceId() {
+        return bmstruckDetailsOrderMapper.getPriceId();
+    }
+
+    /**
+     * 得到单价
+     * @param priceId
+     * @return
+     */
+    @Override
+    public BigDecimal getPriceValue(BigDecimal priceId) {
+        return bmstruckDetailsOrderMapper.getPriceValue(priceId);
+    }
+
+    /**
+     * 得到到厂湿重
+     * @param orderId
+     * @return
+     */
+    @Override
+    public BigDecimal getNetWeight(BigDecimal orderId) {
+        return bmstruckDetailsOrderMapper.getNetWeight(orderId);
+    }
+
+    /**
+     * 替换汽运费公式并进行计算
+     * @param orderId
+     * @return
+     * @throws Exception
+     */
+    public BigDecimal generateTruckFees(BigDecimal orderId) throws Exception {
+        List<Map<String, Object>> priceList = getPriceId();
+        Map<String, Object> map = priceList.get(0);
+        BigDecimal priceId = (BigDecimal) map.get("priceId");
+        BigDecimal priceValue = getPriceValue(priceId);
+        BigDecimal netWeight = getNetWeight(orderId);
+        // 得到船运途损费计费公式
+        String formula_string = bmstruckFormulaService.getTruckFormula(new BigDecimal(8));
+        // 替换船运计算公式
+        formula_string = formula_string.replace("到厂计量湿吨",netWeight.toString())
+                .replace("单价",priceValue.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;
+    }
+}

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

@@ -0,0 +1,31 @@
+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;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/24 17:41
+ * @Version:V2.0
+ */
+@Service
+public class BmstruckFormulaServiceImpl implements IBmstruckFormulaService {
+
+    @Autowired
+    BmstruckFormulaMapper bmstruckFormulaMapper;
+
+    /**
+     * 得到汽运计费公式
+     * @param formulaId
+     * @return
+     */
+    @Override
+    public String getTruckFormula(BigDecimal formulaId) {
+        return bmstruckFormulaMapper.getTruckFormula(formulaId);
+    }
+}

+ 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;
+    }
+}

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

@@ -0,0 +1,53 @@
+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();
+        Integer day = now.getDayOfMonth();
+        String dayStr = day.toString();
+        if (monthStr.length() != 2) {
+            resultNo = resultNo + "0" + now.getMonthValue();
+        }
+        else {
+            resultNo = resultNo + now.getMonthValue();
+        }
+        if (dayStr.length() != 2) {
+            resultNo = resultNo + "0" + now.getDayOfMonth();
+        }
+        else {
+            resultNo = resultNo + now.getDayOfMonth();
+        }
+        switch ((resultId.toString()).length()) {
+            case 1:
+                resultNo = resultNo + "0000" + resultId;
+                break;
+            case 2:
+                resultNo = resultNo + "000" + resultId;
+                break;
+            case 3:
+                resultNo = resultNo + "00" + resultId;
+                break;
+            case 4:
+                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: dil-bmstruck-api-dev
+

+ 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: dil-bmstruck-api-dev

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


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

@@ -0,0 +1,50 @@
+api.version: api/v1/bmstruck
+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: 8076

+ 638 - 0
src/main/resources/com/steerinfo/dil/mapper/BmstruckDetailsOrderMapper.xml

@@ -0,0 +1,638 @@
+<?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.BmstruckDetailsOrderMapper">
+    <resultMap id="BaseResultMap" type="com.steerinfo.dil.model.BmstruckDetailsOrder">
+        <id column="DETAILS_ID" jdbcType="DECIMAL" property="detailsId"/>
+        <result column="PURCHASE_ORDER_ID" jdbcType="DECIMAL" property="purchaseOrderId"/>
+        <result column="ORDER_ID" jdbcType="DECIMAL" property="orderId"/>
+        <result column="DETAILS_NO" jdbcType="VARCHAR" property="detailsNo"/>
+        <result column="DETAILS_TIME" jdbcType="TIMESTAMP" property="detailsTime"/>
+        <result column="PRICE_ID" jdbcType="DECIMAL" property="priceId"/>
+        <result column="DETAILS_AMOUNT" jdbcType="DECIMAL" property="detailsAmount"/>
+        <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, ORDER_ID, DETAILS_NO, DETAILS_TIME, PRICE_ID, DETAILS_AMOUNT,
+    INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK
+    </sql>
+    <sql id="columns_alias">
+        t.DETAILS_ID, t.PURCHASE_ORDER_ID, t.ORDER_ID, t.DETAILS_NO, t.DETAILS_TIME, t.PRICE_ID,
+    t.DETAILS_AMOUNT, 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_DETAILS_ORDER
+    </sql>
+    <sql id="select_alias">
+        SELECT
+        <include refid="columns_alias"/>
+        FROM BMSTRUCK_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="orderId != null">
+                and ORDER_ID = #{orderId}
+            </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="priceId != null">
+                and PRICE_ID = #{priceId}
+            </if>
+            <if test="detailsAmount != null">
+                and DETAILS_AMOUNT = #{detailsAmount}
+            </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="orderId != null">
+                and ORDER_ID = #{orderId}
+            </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="priceId != null">
+                and PRICE_ID = #{priceId}
+            </if>
+            <if test="detailsAmount != null">
+                and DETAILS_AMOUNT = #{detailsAmount}
+            </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_DETAILS_ORDER
+        where DETAILS_ID = #{detailsId,jdbcType=DECIMAL}
+    </delete>
+    <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
+        delete from BMSTRUCK_DETAILS_ORDER
+        where 1!=1
+        <if test="purchaseOrderId != null">
+            or PURCHASE_ORDER_ID = #{purchaseOrderId}
+        </if>
+        <if test="orderId != null">
+            or ORDER_ID = #{orderId}
+        </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="priceId != null">
+            or PRICE_ID = #{priceId}
+        </if>
+        <if test="detailsAmount != null">
+            or DETAILS_AMOUNT = #{detailsAmount}
+        </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.BmstruckDetailsOrder">
+        insert into BMSTRUCK_DETAILS_ORDER (DETAILS_ID, PURCHASE_ORDER_ID, ORDER_ID,
+                                            DETAILS_NO, DETAILS_TIME, PRICE_ID,
+                                            DETAILS_AMOUNT, INSERT_USERNAME, INSERT_TIME,
+                                            UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK)
+        values (#{detailsId,jdbcType=DECIMAL}, #{purchaseOrderId,jdbcType=DECIMAL}, #{orderId,jdbcType=DECIMAL},
+                #{detailsNo,jdbcType=VARCHAR}, #{detailsTime,jdbcType=TIMESTAMP}, #{priceId,jdbcType=DECIMAL},
+                #{detailsAmount,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.BmstruckDetailsOrder">
+        insert into BMSTRUCK_DETAILS_ORDER
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="detailsId != null">
+                DETAILS_ID,
+            </if>
+            <if test="purchaseOrderId != null">
+                PURCHASE_ORDER_ID,
+            </if>
+            <if test="orderId != null">
+                ORDER_ID,
+            </if>
+            <if test="detailsNo != null">
+                DETAILS_NO,
+            </if>
+            <if test="detailsTime != null">
+                DETAILS_TIME,
+            </if>
+            <if test="priceId != null">
+                PRICE_ID,
+            </if>
+            <if test="detailsAmount != null">
+                DETAILS_AMOUNT,
+            </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="orderId != null">
+                #{orderId,jdbcType=DECIMAL},
+            </if>
+            <if test="detailsNo != null">
+                #{detailsNo,jdbcType=VARCHAR},
+            </if>
+            <if test="detailsTime != null">
+                #{detailsTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="priceId != null">
+                #{priceId,jdbcType=DECIMAL},
+            </if>
+            <if test="detailsAmount != null">
+                #{detailsAmount,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.BmstruckDetailsOrder">
+        update BMSTRUCK_DETAILS_ORDER
+        set PURCHASE_ORDER_ID    = #{purchaseOrderId,jdbcType=DECIMAL},
+            ORDER_ID             = #{orderId,jdbcType=DECIMAL},
+            DETAILS_NO           = #{detailsNo,jdbcType=VARCHAR},
+            DETAILS_TIME         = #{detailsTime,jdbcType=TIMESTAMP},
+            PRICE_ID             = #{priceId,jdbcType=DECIMAL},
+            DETAILS_AMOUNT       = #{detailsAmount,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.BmstruckDetailsOrder">
+        update BMSTRUCK_DETAILS_ORDER
+        <set>
+            <if test="purchaseOrderId != null">
+                PURCHASE_ORDER_ID = #{purchaseOrderId,jdbcType=DECIMAL},
+            </if>
+            <if test="orderId != null">
+                ORDER_ID = #{orderId,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="priceId != null">
+                PRICE_ID = #{priceId,jdbcType=DECIMAL},
+            </if>
+            <if test="detailsAmount != null">
+                DETAILS_AMOUNT = #{detailsAmount,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 BMSTRUCK_DETAILS_ORDER
+        (DETAILS_ID,
+        PURCHASE_ORDER_ID, ORDER_ID, DETAILS_NO,
+        DETAILS_TIME, PRICE_ID, DETAILS_AMOUNT,
+        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.orderId,jdbcType=DECIMAL}, #{item.detailsNo,jdbcType=VARCHAR},
+        #{item.detailsTime,jdbcType=TIMESTAMP}, #{item.priceId,jdbcType=DECIMAL},
+        #{item.detailsAmount,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_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>
+        ,ORDER_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.orderId,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>
+        ,PRICE_ID=
+        <foreach collection="list" item="item" index="index" separator=" " open="case DETAILS_ID" close="end">
+            when #{item.detailsId,jdbcType=DECIMAL} then #{item.priceId,jdbcType=DECIMAL}
+        </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>
+        ,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 BMSTRUCK_DETAILS_ORDER
+        where DETAILS_ID in
+        <foreach collection="list" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+    <!-- 友情提示!!!-->
+    <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
+
+    <!-- 展示详单列表 -->
+    <select id="getTruckDetailsOrderList" 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",
+        oo.ORDER_ID as "orderId",
+        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",
+        rc.CAPACITY_NUMBER as "capacityNumber",
+        twr.RESULT_NET_WEIGHT as "resultNetWeight",
+        actp.PRICE_VALUE as "priceValue",
+        bdo.DETAILS_AMOUNT as "detailsAmount"
+        FROM BMSTRUCK_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 OMSTRUCK_ORDER oo
+        ON oo.ORDER_ID = bdo.ORDER_ID
+        LEFT JOIN RMS_CAPACITY rc
+        ON oo.CAPACITY_ID = rc.CAPACITY_ID
+        LEFT JOIN TMSTRUCK_TOTAL_RESULT ttl
+        ON ttl.ORDER_ID = oo.ORDER_ID
+        LEFT JOIN TMSTRUCK_WEIGHT_RESULT twr
+        ON twr.RESULT_TOTAL_ID = ttl.RESULT_TOTAL_ID
+        LEFT JOIN AMS_CONTRACT_TRANSPORT_PRICE actp
+        ON actp.PRICE_ID = bdo.PRICE_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="capacityNumber!= null">
+                and
+                <foreach collection="capacityNumber" item="item" open="(" separator="," close=")">
+                    "capacityNumber" in #{item}
+                </foreach>
+            </if>
+            <if test="resultNetWeight!= null">
+                and
+                <foreach collection="resultNetWeight" item="item" open="(" separator="," close=")">
+                    "resultNetWeight" in #{item}
+                </foreach>
+            </if>
+            <if test="priceValue!= null">
+                and
+                <foreach collection="priceValue" item="item" open="(" separator="," close=")">
+                    "priceValue" 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>
+    <!-- 得到最大id -->
+    <select id="selectMaxId" resultType="DECIMAL">
+        SELECT MAX(DETAILS_ID)
+        FROM BMSTRUCK_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="getTruckResultList" parameterType="java.util.Map" resultType="java.util.Map">
+        SELECT *
+        FROM (
+        SELECT oo.INSERT_TIME as "insertTime",
+        apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+        rm.MATERIAL_NAME as "materialName",
+        db.RESULT_FOREIGN_SHIP_NAME as "resultForeignShipName",
+        oo.ORDER_ISSUE_TIME as "orderIssueTime",
+        rc.CONSIGNEE_COMPANY_NAME as "consigneeCompanyName",
+        rsu.SUPPLIER_NAME as "supplierName",
+        rca.CAPACITY_NUMBER as "capacityNumber",
+        twr.RESULT_NET_WEIGHT as "resultNetWeight"
+        FROM OMSTRUCK_ORDER oo
+        LEFT JOIN RMS_CAPACITY rca
+        ON rca.CAPACITY_ID = oo.CAPACITY_ID
+        LEFT JOIN AMS_PURCHASE_ORDER apo
+        ON apo.PURCHASE_ORDER_ID = oo.ORDER_PLAN_ID
+        LEFT JOIN RMS_SUPPLIER rsu
+        ON rsu.SUPPLIER_ID = apo.SUPPLIER_UNIT_ID
+        LEFT JOIN RMS_CONSIGNEE rc
+        ON rc.CONSIGNEE_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 TMSTRUCK_TOTAL_RESULT ttr
+        ON oo.ORDER_ID = ttr.ORDER_ID
+        LEFT JOIN TMSTRUCK_WEIGHT_RESULT twr
+        ON twr.RESULT_TOTAL_ID = ttr.RESULT_TOTAL_ID
+        WHERE oo.ORDER_ID = #{orderId}
+        )
+        <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="orderIssueTime!= null">
+                and
+                <foreach collection="orderIssueTime" item="item" open="(" separator="," close=")">
+                    "orderIssueTime" in to_date('${item}','yyyy-mm-dd hh24:mi:ss')
+                </foreach>
+            </if>
+            <if test="consigneeCompanyName!= null">
+                and
+                <foreach collection="consigneeCompanyName" item="item" open="(" separator="," close=")">
+                    "consigneeCompanyName" in #{item}
+                </foreach>
+            </if>
+            <if test="supplierName!= null">
+                and
+                <foreach collection="supplierName" item="item" open="(" separator="," close=")">
+                    "supplierName" in #{item}
+                </foreach>
+            </if>
+            <if test="capacityNumber!= null">
+                and
+                <foreach collection="capacityNumber" item="item" open="(" separator="," close=")">
+                    "capacityNumber" in #{item}
+                </foreach>
+            </if>
+            <if test="resultNetWeight!= null">
+                and
+                <foreach collection="resultNetWeight" item="item" open="(" separator="," close=")">
+                    "resultNetWeight" in #{item}
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderBy"></include>
+    </select>
+
+    <!-- 得到计算因子 -->
+    <select id="getFormulaMembers" parameterType="DECIMAL" resultType="DECIMAL">
+        SELECT apo.PURCHASE_ORDER_ID
+        FROM OMSTRUCK_ORDER oo
+                 LEFT JOIN AMS_PURCHASE_ORDER apo
+                           ON apo.PURCHASE_ORDER_ID = oo.ORDER_PLAN_ID
+        WHERE oo.ORDER_ID = #{orderId}
+    </select>
+
+    <!-- 得到单价id -->
+    <select id="getPriceId" resultType="java.util.Map" >
+        SELECT
+        actp.PRICE_ID as "priceId"
+        FROM AMS_CONTRACT_TRANSPORT_PRICE actp
+        LEFT JOIN RMS_CAPACITY rc
+        ON rc.CAPACITY_ID = actp.CAPACITY_ID
+        WHERE rc.CAPACITY_TYPE_ID = 1
+        AND actp.DELETED = 0
+        ORDER BY actp.PRICE_DATE DESC
+    </select>
+
+    <select id="getPriceValue" parameterType="DECIMAL" resultType="DECIMAL">
+        SELECT
+        actp.PRICE_VALUE as "priceValue"
+        FROM AMS_CONTRACT_TRANSPORT_PRICE actp
+        WHERE PRICE_ID = #{priceId}
+    </select>
+    
+    <select id="getNetWeight" parameterType="DECIMAL" resultType="DECIMAL">
+        SELECT
+        twr.RESULT_NET_WEIGHT as "netWeight"
+        FROM OMSTRUCK_ORDER oo
+        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
+        WHERE oo.ORDER_ID = #{orderId}
+    </select>
+
+</mapper>

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

@@ -0,0 +1,408 @@
+<?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="getTruckFormula" parameterType="DECIMAL" resultType="java.lang.String">
+        SELECT FORMULA_STRING
+        FROM BMSTRUCK_FORMULA
+        WHERE FORMULA_ID = #{formulaId}
+    </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=密码错误