liyg 2 éve
szülő
commit
e25160187c

+ 13 - 4
src/main/java/com/steerinfo/dil/controller/BmstruckStatementController.java

@@ -67,7 +67,7 @@ public class BmstruckStatementController extends BaseRESTfulController {
     /**
      * 生成汽运账单
      *
-     * @param mapList
+     * @param map
      * @return
      */
     @ApiModelProperty(value = "生成汽运账单")
@@ -75,9 +75,18 @@ public class BmstruckStatementController extends BaseRESTfulController {
             @ApiImplicitParam(name = "mapList", value = "详单列表", required = false, dataType = "java.util.List"),
     })
     @PostMapping("/addTruckStatement")
-    public RESTfulResult addTruckStatement(@RequestBody List<Map<String, Object>> mapList) {
-        int code1 = bmstruckStatementService.addTruckStatement(mapList);
-        return success(code1);
+    public RESTfulResult addTruckStatement(@RequestBody Map<String, Object> map) {
+        try{
+            int code1 = bmstruckStatementService.addTruckStatement(map);
+            return success(code1);
+        }catch (Exception e){
+            e.printStackTrace();
+            String message="新增失败";
+            if(!e.getMessage().contains("Exception")){
+                message+=(":"+e.getMessage());
+            }
+            return failed(message);
+        }
     }
 
     /**

+ 16 - 0
src/main/java/com/steerinfo/dil/mapper/BmstruckStatementMapper.java

@@ -8,6 +8,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
 @Mapper
@@ -33,4 +34,19 @@ public interface BmstruckStatementMapper extends IBaseMapper<BmstruckStatement,
     List<Map<String, Object>> getSaleTruckStatementDetailsOrderList(Map<String, Object> mapVal);
     //通过账单id获取账单对应的详单信息
     List<BigDecimal> getDetailById(BigDecimal statementId);
+
+    //查询统计信息
+    Map<String,Object> getDetails(Map<String, Object> mapVal);
+
+    //查询承运商和收货客户Id
+    List<Map<String, Object>> getDetailIds(Map<String, Object> mapVal);
+
+    //批量修改详单
+    int batchUpdateDetails(Map<String, Object> mapVal);
+
+    //查询是否已绑定账单
+    List<BigDecimal> getStatementIds(Map<String, Object> mapVal);
+
+    //取消所有绑定
+    int updateAllBind(@Param(value = "statementIds") List<BigDecimal> statementIds);
 }

+ 119 - 24
src/main/java/com/steerinfo/dil/model/BmstruckStatement.java

@@ -9,7 +9,7 @@ import java.util.Date;
 @ApiModel(value="结算单")
 public class BmstruckStatement implements IBasePO<BigDecimal> {
     /**
-     * 主键id(STATEMENT_ID,DECIMAL,38)
+     * 主键id(STATEMENT_ID,DECIMAL,0)
      */
     @ApiModelProperty(value="主键id",required=true)
     private BigDecimal statementId;
@@ -21,7 +21,7 @@ public class BmstruckStatement implements IBasePO<BigDecimal> {
     private String statementNumber;
 
     /**
-     * 额外费用id(COST_ID,DECIMAL,38)
+     * 额外费用id(COST_ID,DECIMAL,0)
      */
     @ApiModelProperty(value="额外费用id",required=false)
     private BigDecimal costId;
@@ -92,13 +92,41 @@ public class BmstruckStatement implements IBasePO<BigDecimal> {
     @ApiModelProperty(value="审核状态(0:未审核,1:已审核)",required=false)
     private BigDecimal statementType;
 
-    public BigDecimal getStatementType() {
-        return statementType;
-    }
+    /**
+     * 金蝶核准金额(EAS_AMOUNT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="金蝶核准金额",required=false)
+    private BigDecimal easAmount;
 
-    public void setStatementType(BigDecimal statementType) {
-        this.statementType = statementType;
-    }
+    /**
+     * 计算总金额(SUM_AMOUNT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="计算总金额",required=false)
+    private BigDecimal sumAmount;
+
+    /**
+     * 总车数(CAR_NUM,DECIMAL,0)
+     */
+    @ApiModelProperty(value="总车数",required=false)
+    private BigDecimal carNum;
+
+    /**
+     * 收货客户(CONSIGNEE_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="收货客户",required=false)
+    private BigDecimal consigneeId;
+
+    /**
+     * 承运商(CARRIER_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="承运商",required=false)
+    private BigDecimal carrierId;
+
+    /**
+     * 发票图片(PHOTO,VARCHAR,255)
+     */
+    @ApiModelProperty(value="发票图片",required=false)
+    private String photo;
 
     private static final long serialVersionUID = 1L;
 
@@ -216,23 +244,90 @@ public class BmstruckStatement implements IBasePO<BigDecimal> {
         this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
     }
 
+    public BigDecimal getStatementType() {
+        return statementType;
+    }
+
+    public void setStatementType(BigDecimal statementType) {
+        this.statementType = statementType;
+    }
+
+    public BigDecimal getEasAmount() {
+        return easAmount;
+    }
+
+    public void setEasAmount(BigDecimal easAmount) {
+        this.easAmount = easAmount;
+    }
+
+    public BigDecimal getSumAmount() {
+        return sumAmount;
+    }
+
+    public void setSumAmount(BigDecimal sumAmount) {
+        this.sumAmount = sumAmount;
+    }
+
+    public BigDecimal getCarNum() {
+        return carNum;
+    }
+
+    public void setCarNum(BigDecimal carNum) {
+        this.carNum = carNum;
+    }
+
+    public BigDecimal getConsigneeId() {
+        return consigneeId;
+    }
+
+    public void setConsigneeId(BigDecimal consigneeId) {
+        this.consigneeId = consigneeId;
+    }
+
+    public BigDecimal getCarrierId() {
+        return carrierId;
+    }
+
+    public void setCarrierId(BigDecimal carrierId) {
+        this.carrierId = carrierId;
+    }
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo == null ? null : photo.trim();
+    }
+
     @Override
     public String toString() {
-        return "BmstruckStatement{" +
-                "statementId=" + statementId +
-                ", statementNumber='" + statementNumber + '\'' +
-                ", costId=" + costId +
-                ", statementPaymentUnit='" + statementPaymentUnit + '\'' +
-                ", statementExcludTax=" + statementExcludTax +
-                ", statementIncludTax=" + statementIncludTax +
-                ", statementRemark='" + statementRemark + '\'' +
-                ", statementSettlementStatus='" + statementSettlementStatus + '\'' +
-                ", insertUsername='" + insertUsername + '\'' +
-                ", insertTime=" + insertTime +
-                ", updateUsername='" + updateUsername + '\'' +
-                ", updateTime=" + updateTime +
-                ", insertUpdateRemark='" + insertUpdateRemark + '\'' +
-                ", statementType=" + statementType +
-                '}';
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", statementId=").append(statementId);
+        sb.append(", statementNumber=").append(statementNumber);
+        sb.append(", costId=").append(costId);
+        sb.append(", statementPaymentUnit=").append(statementPaymentUnit);
+        sb.append(", statementExcludTax=").append(statementExcludTax);
+        sb.append(", statementIncludTax=").append(statementIncludTax);
+        sb.append(", statementRemark=").append(statementRemark);
+        sb.append(", statementSettlementStatus=").append(statementSettlementStatus);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", statementType=").append(statementType);
+        sb.append(", easAmount=").append(easAmount);
+        sb.append(", sumAmount=").append(sumAmount);
+        sb.append(", carNum=").append(carNum);
+        sb.append(", consigneeId=").append(consigneeId);
+        sb.append(", carrierId=").append(carrierId);
+        sb.append(", photo=").append(photo);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
     }
 }

+ 2 - 2
src/main/java/com/steerinfo/dil/service/IBmstruckStatementService.java

@@ -31,10 +31,10 @@ public interface IBmstruckStatementService{
 
     /**
      * 生成汽运账单
-     * @param mapList
+     * @param map
      * @return
      */
-    int addTruckStatement(List<Map<String, Object>> mapList);
+    int addTruckStatement(Map<String, Object> map) throws Exception;
 
     /**
      * 展示账单下的详单

+ 31 - 38
src/main/java/com/steerinfo/dil/service/impl/BmstruckStatementServiceImpl.java

@@ -94,24 +94,41 @@ public class BmstruckStatementServiceImpl implements IBmstruckStatementService {
     /**
      * 生成汽运账单
      *
-     * @param mapList
+     * @param map
      * @return
      */
     @Transactional
     @Override
-    public int addTruckStatement(List<Map<String, Object>> mapList) {
+    public int addTruckStatement(Map<String, Object> map) throws Exception {
+        BigDecimal excludeTax =  DataChange.dataToBigDecimal( map.get("excludeTax"));
+        String url = map.get("url").toString();
+        //校验是否已经绑定账单
+        List<BigDecimal> oldStatementIds= bmstruckStatementMapper.getStatementIds(map);
+        if(oldStatementIds.size()>0){
+            //删除所有订单
+            bmstruckStatementMapper.batchDelete(oldStatementIds);
+            //取消所有绑定
+            bmstruckStatementMapper.updateAllBind(oldStatementIds);
+        }
+        //查询统计信息
+        Map<String,Object> count = bmstruckStatementMapper.getDetails(map);
+        //查询单位
+        List<Map<String, Object>> companys = bmstruckStatementMapper.getDetailIds(map);
+        if(companys.size()>1){
+            throw new Exception("存在多个承运商和收货客户!请检查所勾选的订单!");
+        }else if(companys.size() == 0){
+            throw new Exception("没有查询到承运商和收货客户!");
+        }
         BmstruckStatement bmstruckStatement = new BmstruckStatement();
-        BmstruckCheck bmstruckCheck = new BmstruckCheck();
+        bmstruckStatement.setCarNum(DataChange.dataToBigDecimal(count.get("carNum")).setScale(2,BigDecimal.ROUND_HALF_UP));
+        bmstruckStatement.setSumAmount(DataChange.dataToBigDecimal(count.get("sumAmount")).setScale(2,BigDecimal.ROUND_HALF_UP));
+        bmstruckStatement.setConsigneeId(DataChange.dataToBigDecimal(companys.get(0).get("consigneeId")));
+        bmstruckStatement.setCarrierId(DataChange.dataToBigDecimal(companys.get(0).get("carrierId")));
+        bmstruckStatement.setStatementExcludTax(excludeTax.setScale(2,BigDecimal.ROUND_HALF_UP));
+        bmstruckStatement.setPhoto(url);
         // 汽运账单主键
         BigDecimal statementId = bmstruckStatementMapper.selectStatementId();
         bmstruckStatement.setStatementId(statementId);
-        BigDecimal checkId = bmstruckCheckMapper.selectCheckId();
-        bmstruckCheck.setCheckId(checkId);
-        bmstruckCheck.setStatementId(statementId);
-        bmstruckCheck.setCheckCarrierStatus(new BigDecimal(0));
-        bmstruckCheck.setCheckShipperStatus(new BigDecimal(0));
-        bmstruckCheck.setCheckReceiveCustomerStatus(new BigDecimal(0));
-        bmstruckCheckMapper.insertSelective(bmstruckCheck);
         // 汽运账单编号
         String statementNumber = noUtil.setResultNo("QYZD", statementId);
         bmstruckStatement.setStatementNumber(statementNumber);
@@ -121,38 +138,14 @@ public class BmstruckStatementServiceImpl implements IBmstruckStatementService {
         bmstruckStatement.setStatementRemark("汽运费账单");
         // 常规字段
         bmstruckStatement.setInsertTime(new Date());
-        bmstruckStatement.setInsertUsername("admin");
+        bmstruckStatement.setInsertUsername(map.get("userId").toString());
         bmstruckStatement.setUpdateTime(new Date());
         bmstruckStatement.setUpdateUsername("admin");
         bmstruckStatement.setInsertUpdateRemark("无");
-        Double doubleTotalAmount = new Double(0);
-        for (Map<String, Object> map : mapList) {
-            // 中间表主键
-            BigDecimal detailsStatementId = bmstruckDetailsStatementMapper.selectDetailsStatementId();
-            // 详单id
-            BigDecimal detailsId = new BigDecimal((Integer) map.get("detailsId"));
-            BmstruckDetailsOrder bmstruckDetailsOrder = bmstruckDetailsOrderMapper.selectByPrimaryKey(detailsId);
-            bmstruckDetailsOrder.setWetherToStatement(new BigDecimal(1));
-            bmstruckDetailsOrderMapper.updateByPrimaryKeySelective(bmstruckDetailsOrder);
-            BmstruckDetailsStatement bmstruckDetailsStatement = new BmstruckDetailsStatement();
-            bmstruckDetailsStatement.setDetailsStatementId(detailsStatementId);
-            bmstruckDetailsStatement.setStatementId(statementId);
-            bmstruckDetailsStatement.setDetailsId(detailsId);
-            // 设置常规字段
-            bmstruckDetailsStatement.setInsertTime(new Date());
-            bmstruckDetailsStatement.setInsertUsername("admin");
-            bmstruckDetailsStatement.setUpdateTime(new Date());
-            bmstruckDetailsStatement.setUpdateUsername("admin");
-            bmstruckDetailsStatement.setInsertUpdateRemark("无");
-            BigDecimal detailsAmount = DataChange.dataToBigDecimal(map.get("detailsAmount"));
-            Double detailsAmountDouble = Double.valueOf(detailsAmount.toString());
-            doubleTotalAmount += detailsAmountDouble;
-            bmstruckDetailsStatementMapper.insertSelective(bmstruckDetailsStatement);
-        }
-        DecimalFormat df = new DecimalFormat("0.00");
-        String statementTotalAmount = df.format(doubleTotalAmount);
-        bmstruckStatement.setStatementExcludTax(new BigDecimal(statementTotalAmount));
         int code = bmstruckStatementMapper.insertSelective(bmstruckStatement);
+        //详单绑定账单ID
+        map.put("statementId",statementId);
+        bmstruckStatementMapper.batchUpdateDetails(map);
 //        // 调用金蝶接口
 //        List<Map<String, Object>> entries = joinApiFeign.getSaleDetailsOrder(statementId.intValue());
 //        Map<String,Object> head = joinApiFeign.getStatement(statementId.intValue());

+ 295 - 66
src/main/resources/com/steerinfo/dil/mapper/BmstruckStatementMapper.xml

@@ -2,39 +2,44 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.steerinfo.dil.mapper.BmstruckStatementMapper">
     <resultMap id="BaseResultMap" type="com.steerinfo.dil.model.BmstruckStatement">
-        <id column="STATEMENT_ID" jdbcType="DECIMAL" property="statementId"/>
-        <result column="STATEMENT_NUMBER" jdbcType="VARCHAR" property="statementNumber"/>
-        <result column="COST_ID" jdbcType="DECIMAL" property="costId"/>
-        <result column="STATEMENT_PAYMENT_UNIT" jdbcType="VARCHAR" property="statementPaymentUnit"/>
-        <result column="STATEMENT_EXCLUD_TAX" jdbcType="DECIMAL" property="statementExcludTax"/>
-        <result column="STATEMENT_INCLUD_TAX" jdbcType="DECIMAL" property="statementIncludTax"/>
-        <result column="STATEMENT_REMARK" jdbcType="VARCHAR" property="statementRemark"/>
-        <result column="STATEMENT_SETTLEMENT_STATUS" jdbcType="VARCHAR" property="statementSettlementStatus"/>
-        <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"/>
+        <id column="STATEMENT_ID" jdbcType="DECIMAL" property="statementId" />
+        <result column="STATEMENT_NUMBER" jdbcType="VARCHAR" property="statementNumber" />
+        <result column="COST_ID" jdbcType="DECIMAL" property="costId" />
+        <result column="STATEMENT_PAYMENT_UNIT" jdbcType="VARCHAR" property="statementPaymentUnit" />
+        <result column="STATEMENT_EXCLUD_TAX" jdbcType="DECIMAL" property="statementExcludTax" />
+        <result column="STATEMENT_INCLUD_TAX" jdbcType="DECIMAL" property="statementIncludTax" />
+        <result column="STATEMENT_REMARK" jdbcType="VARCHAR" property="statementRemark" />
+        <result column="STATEMENT_SETTLEMENT_STATUS" jdbcType="VARCHAR" property="statementSettlementStatus" />
+        <result column="INSERT_USERNAME" jdbcType="VARCHAR" property="insertUsername" />
+        <result column="INSERT_TIME" jdbcType="TIMESTAMP" property="insertTime" />
+        <result column="UPDATE_USERNAME" jdbcType="VARCHAR" property="updateUsername" />
+        <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
+        <result column="INSERT_UPDATE_REMARK" jdbcType="VARCHAR" property="insertUpdateRemark" />
+        <result column="STATEMENT_TYPE" jdbcType="DECIMAL" property="statementType" />
+        <result column="EAS_AMOUNT" jdbcType="DECIMAL" property="easAmount" />
+        <result column="SUM_AMOUNT" jdbcType="DECIMAL" property="sumAmount" />
+        <result column="CAR_NUM" jdbcType="DECIMAL" property="carNum" />
+        <result column="CONSIGNEE_ID" jdbcType="DECIMAL" property="consigneeId" />
+        <result column="CARRIER_ID" jdbcType="DECIMAL" property="carrierId" />
+        <result column="PHOTO" jdbcType="VARCHAR" property="photo" />
     </resultMap>
     <sql id="columns">
         STATEMENT_ID, STATEMENT_NUMBER, COST_ID, STATEMENT_PAYMENT_UNIT, STATEMENT_EXCLUD_TAX,
-    STATEMENT_INCLUD_TAX, STATEMENT_REMARK, STATEMENT_SETTLEMENT_STATUS, INSERT_USERNAME, 
-    INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK
+    STATEMENT_INCLUD_TAX, STATEMENT_REMARK, STATEMENT_SETTLEMENT_STATUS, INSERT_USERNAME,
+    INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK, STATEMENT_TYPE,
+    EAS_AMOUNT, SUM_AMOUNT, CAR_NUM, CONSIGNEE_ID, CARRIER_ID, PHOTO
     </sql>
     <sql id="columns_alias">
         t.STATEMENT_ID, t.STATEMENT_NUMBER, t.COST_ID, t.STATEMENT_PAYMENT_UNIT, t.STATEMENT_EXCLUD_TAX,
-    t.STATEMENT_INCLUD_TAX, t.STATEMENT_REMARK, t.STATEMENT_SETTLEMENT_STATUS, t.INSERT_USERNAME, 
-    t.INSERT_TIME, t.UPDATE_USERNAME, t.UPDATE_TIME, t.INSERT_UPDATE_REMARK
+    t.STATEMENT_INCLUD_TAX, t.STATEMENT_REMARK, t.STATEMENT_SETTLEMENT_STATUS, t.INSERT_USERNAME,
+    t.INSERT_TIME, t.UPDATE_USERNAME, t.UPDATE_TIME, t.INSERT_UPDATE_REMARK, t.STATEMENT_TYPE,
+    t.EAS_AMOUNT, t.SUM_AMOUNT, t.CAR_NUM, t.CONSIGNEE_ID, t.CARRIER_ID, t.PHOTO
     </sql>
     <sql id="select">
-        SELECT
-        <include refid="columns"/>
-        FROM BMSTRUCK_STATEMENT
+        SELECT <include refid="columns" /> FROM BMSTRUCK_STATEMENT
     </sql>
     <sql id="select_alias">
-        SELECT
-        <include refid="columns_alias"/>
-        FROM BMSTRUCK_STATEMENT t
+        SELECT <include refid="columns_alias" /> FROM BMSTRUCK_STATEMENT t
     </sql>
     <sql id="where">
         <where>
@@ -77,6 +82,27 @@
             <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
                 and INSERT_UPDATE_REMARK = #{insertUpdateRemark}
             </if>
+            <if test="statementType != null">
+                and STATEMENT_TYPE = #{statementType}
+            </if>
+            <if test="easAmount != null">
+                and EAS_AMOUNT = #{easAmount}
+            </if>
+            <if test="sumAmount != null">
+                and SUM_AMOUNT = #{sumAmount}
+            </if>
+            <if test="carNum != null">
+                and CAR_NUM = #{carNum}
+            </if>
+            <if test="consigneeId != null">
+                and CONSIGNEE_ID = #{consigneeId}
+            </if>
+            <if test="carrierId != null">
+                and CARRIER_ID = #{carrierId}
+            </if>
+            <if test="photo != null and photo != ''">
+                and PHOTO = #{photo}
+            </if>
         </where>
     </sql>
     <sql id="whereLike">
@@ -120,11 +146,31 @@
             <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
                 and INSERT_UPDATE_REMARK LIKE '%${insertUpdateRemark}%'
             </if>
+            <if test="statementType != null">
+                and STATEMENT_TYPE = #{statementType}
+            </if>
+            <if test="easAmount != null">
+                and EAS_AMOUNT = #{easAmount}
+            </if>
+            <if test="sumAmount != null">
+                and SUM_AMOUNT = #{sumAmount}
+            </if>
+            <if test="carNum != null">
+                and CAR_NUM = #{carNum}
+            </if>
+            <if test="consigneeId != null">
+                and CONSIGNEE_ID = #{consigneeId}
+            </if>
+            <if test="carrierId != null">
+                and CARRIER_ID = #{carrierId}
+            </if>
+            <if test="photo != null and photo != ''">
+                and PHOTO LIKE '%${photo}%'
+            </if>
         </where>
     </sql>
     <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
-        delete
-        from BMSTRUCK_STATEMENT
+        delete from BMSTRUCK_STATEMENT
         where STATEMENT_ID = #{statementId,jdbcType=DECIMAL}
     </delete>
     <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
@@ -166,20 +212,45 @@
         <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
             or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
         </if>
+        <if test="statementType != null">
+            or STATEMENT_TYPE = #{statementType}
+        </if>
+        <if test="easAmount != null">
+            or EAS_AMOUNT = #{easAmount}
+        </if>
+        <if test="sumAmount != null">
+            or SUM_AMOUNT = #{sumAmount}
+        </if>
+        <if test="carNum != null">
+            or CAR_NUM = #{carNum}
+        </if>
+        <if test="consigneeId != null">
+            or CONSIGNEE_ID = #{consigneeId}
+        </if>
+        <if test="carrierId != null">
+            or CARRIER_ID = #{carrierId}
+        </if>
+        <if test="photo != null and photo != ''">
+            or PHOTO = #{photo}
+        </if>
     </delete>
     <insert id="insert" parameterType="com.steerinfo.dil.model.BmstruckStatement">
         insert into BMSTRUCK_STATEMENT (STATEMENT_ID, STATEMENT_NUMBER, COST_ID,
                                         STATEMENT_PAYMENT_UNIT, STATEMENT_EXCLUD_TAX,
                                         STATEMENT_INCLUD_TAX, STATEMENT_REMARK, STATEMENT_SETTLEMENT_STATUS,
                                         INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME,
-                                        UPDATE_TIME, INSERT_UPDATE_REMARK)
+                                        UPDATE_TIME, INSERT_UPDATE_REMARK, STATEMENT_TYPE,
+                                        EAS_AMOUNT, SUM_AMOUNT, CAR_NUM,
+                                        CONSIGNEE_ID, CARRIER_ID, PHOTO
+        )
         values (#{statementId,jdbcType=DECIMAL}, #{statementNumber,jdbcType=VARCHAR}, #{costId,jdbcType=DECIMAL},
                 #{statementPaymentUnit,jdbcType=VARCHAR}, #{statementExcludTax,jdbcType=DECIMAL},
-                #{statementIncludTax,jdbcType=DECIMAL}, #{statementRemark,jdbcType=VARCHAR},
-                #{statementSettlementStatus,jdbcType=VARCHAR},
-                #{insertUsername,jdbcType=VARCHAR}, #{insertTime,jdbcType=TIMESTAMP},
-                #{updateUsername,jdbcType=VARCHAR},
-                #{updateTime,jdbcType=TIMESTAMP}, #{insertUpdateRemark,jdbcType=VARCHAR})
+                #{statementIncludTax,jdbcType=DECIMAL}, #{statementRemark,jdbcType=VARCHAR}, #{statementSettlementStatus,jdbcType=VARCHAR},
+                #{insertUsername,jdbcType=VARCHAR}, #{insertTime,jdbcType=TIMESTAMP}, #{updateUsername,jdbcType=VARCHAR},
+                #{updateTime,jdbcType=TIMESTAMP}, #{insertUpdateRemark,jdbcType=VARCHAR}, #{statementType,jdbcType=DECIMAL},
+                #{easAmount,jdbcType=DECIMAL}, #{sumAmount,jdbcType=DECIMAL}, #{carNum,jdbcType=DECIMAL},
+                #{consigneeId,jdbcType=DECIMAL}, #{carrierId,jdbcType=DECIMAL}, #{photo,jdbcType=VARCHAR}
+               )
     </insert>
     <insert id="insertSelective" parameterType="com.steerinfo.dil.model.BmstruckStatement">
         insert into BMSTRUCK_STATEMENT
@@ -223,6 +294,27 @@
             <if test="insertUpdateRemark != null">
                 INSERT_UPDATE_REMARK,
             </if>
+            <if test="statementType != null">
+                STATEMENT_TYPE,
+            </if>
+            <if test="easAmount != null">
+                EAS_AMOUNT,
+            </if>
+            <if test="sumAmount != null">
+                SUM_AMOUNT,
+            </if>
+            <if test="carNum != null">
+                CAR_NUM,
+            </if>
+            <if test="consigneeId != null">
+                CONSIGNEE_ID,
+            </if>
+            <if test="carrierId != null">
+                CARRIER_ID,
+            </if>
+            <if test="photo != null">
+                PHOTO,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="statementId != null">
@@ -264,22 +356,50 @@
             <if test="insertUpdateRemark != null">
                 #{insertUpdateRemark,jdbcType=VARCHAR},
             </if>
+            <if test="statementType != null">
+                #{statementType,jdbcType=DECIMAL},
+            </if>
+            <if test="easAmount != null">
+                #{easAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="sumAmount != null">
+                #{sumAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="carNum != null">
+                #{carNum,jdbcType=DECIMAL},
+            </if>
+            <if test="consigneeId != null">
+                #{consigneeId,jdbcType=DECIMAL},
+            </if>
+            <if test="carrierId != null">
+                #{carrierId,jdbcType=DECIMAL},
+            </if>
+            <if test="photo != null">
+                #{photo,jdbcType=VARCHAR},
+            </if>
         </trim>
     </insert>
     <update id="updateByPrimaryKey" parameterType="com.steerinfo.dil.model.BmstruckStatement">
         update BMSTRUCK_STATEMENT
-        set STATEMENT_NUMBER            = #{statementNumber,jdbcType=VARCHAR},
-            COST_ID                     = #{costId,jdbcType=DECIMAL},
-            STATEMENT_PAYMENT_UNIT      = #{statementPaymentUnit,jdbcType=VARCHAR},
-            STATEMENT_EXCLUD_TAX        = #{statementExcludTax,jdbcType=DECIMAL},
-            STATEMENT_INCLUD_TAX        = #{statementIncludTax,jdbcType=DECIMAL},
-            STATEMENT_REMARK            = #{statementRemark,jdbcType=VARCHAR},
+        set STATEMENT_NUMBER = #{statementNumber,jdbcType=VARCHAR},
+            COST_ID = #{costId,jdbcType=DECIMAL},
+            STATEMENT_PAYMENT_UNIT = #{statementPaymentUnit,jdbcType=VARCHAR},
+            STATEMENT_EXCLUD_TAX = #{statementExcludTax,jdbcType=DECIMAL},
+            STATEMENT_INCLUD_TAX = #{statementIncludTax,jdbcType=DECIMAL},
+            STATEMENT_REMARK = #{statementRemark,jdbcType=VARCHAR},
             STATEMENT_SETTLEMENT_STATUS = #{statementSettlementStatus,jdbcType=VARCHAR},
-            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}
+            INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+            INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+            UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+            UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+            INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+            STATEMENT_TYPE = #{statementType,jdbcType=DECIMAL},
+            EAS_AMOUNT = #{easAmount,jdbcType=DECIMAL},
+            SUM_AMOUNT = #{sumAmount,jdbcType=DECIMAL},
+            CAR_NUM = #{carNum,jdbcType=DECIMAL},
+            CONSIGNEE_ID = #{consigneeId,jdbcType=DECIMAL},
+            CARRIER_ID = #{carrierId,jdbcType=DECIMAL},
+            PHOTO = #{photo,jdbcType=VARCHAR}
         where STATEMENT_ID = #{statementId,jdbcType=DECIMAL}
     </update>
     <update id="updateByPrimaryKeySelective" parameterType="com.steerinfo.dil.model.BmstruckStatement">
@@ -321,20 +441,41 @@
             <if test="insertUpdateRemark != null">
                 INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
             </if>
+            <if test="statementType != null">
+                STATEMENT_TYPE = #{statementType,jdbcType=DECIMAL},
+            </if>
+            <if test="easAmount != null">
+                EAS_AMOUNT = #{easAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="sumAmount != null">
+                SUM_AMOUNT = #{sumAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="carNum != null">
+                CAR_NUM = #{carNum,jdbcType=DECIMAL},
+            </if>
+            <if test="consigneeId != null">
+                CONSIGNEE_ID = #{consigneeId,jdbcType=DECIMAL},
+            </if>
+            <if test="carrierId != null">
+                CARRIER_ID = #{carrierId,jdbcType=DECIMAL},
+            </if>
+            <if test="photo != null">
+                PHOTO = #{photo,jdbcType=VARCHAR},
+            </if>
         </set>
         where STATEMENT_ID = #{statementId,jdbcType=DECIMAL}
     </update>
     <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
-        <include refid="select"/>
+        <include refid="select" />
         where STATEMENT_ID = #{statementId,jdbcType=DECIMAL}
     </select>
     <select id="selectByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
-        <include refid="select"/>
-        <include refid="where"/>
+        <include refid="select" />
+        <include refid="where" />
     </select>
     <select id="selectLikeByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
-        <include refid="select"/>
-        <include refid="whereLike"/>
+        <include refid="select" />
+        <include refid="whereLike" />
     </select>
     <insert id="batchInsert" parameterType="java.util.List">
         insert into BMSTRUCK_STATEMENT
@@ -344,83 +485,116 @@
         STATEMENT_REMARK, STATEMENT_SETTLEMENT_STATUS,
         INSERT_USERNAME, INSERT_TIME,
         UPDATE_USERNAME, UPDATE_TIME,
-        INSERT_UPDATE_REMARK)
+        INSERT_UPDATE_REMARK, STATEMENT_TYPE,
+        EAS_AMOUNT, SUM_AMOUNT, CAR_NUM,
+        CONSIGNEE_ID, CARRIER_ID, PHOTO
+        )
         ( <foreach collection="list" item="item" separator="union all">
         select
         #{item.statementId,jdbcType=DECIMAL},
-        #{item.statementNumber,jdbcType=VARCHAR}, #{item.costId,jdbcType=DECIMAL},
-        #{item.statementPaymentUnit,jdbcType=VARCHAR},
+        #{item.statementNumber,jdbcType=VARCHAR}, #{item.costId,jdbcType=DECIMAL}, #{item.statementPaymentUnit,jdbcType=VARCHAR},
         #{item.statementExcludTax,jdbcType=DECIMAL}, #{item.statementIncludTax,jdbcType=DECIMAL},
         #{item.statementRemark,jdbcType=VARCHAR}, #{item.statementSettlementStatus,jdbcType=VARCHAR},
         #{item.insertUsername,jdbcType=VARCHAR}, #{item.insertTime,jdbcType=TIMESTAMP},
         #{item.updateUsername,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP},
-        #{item.insertUpdateRemark,jdbcType=VARCHAR} from dual
+        #{item.insertUpdateRemark,jdbcType=VARCHAR}, #{item.statementType,jdbcType=DECIMAL},
+        #{item.easAmount,jdbcType=DECIMAL}, #{item.sumAmount,jdbcType=DECIMAL}, #{item.carNum,jdbcType=DECIMAL},
+        #{item.consigneeId,jdbcType=DECIMAL}, #{item.carrierId,jdbcType=DECIMAL}, #{item.photo,jdbcType=VARCHAR}
+        from dual
     </foreach> )
     </insert>
     <update id="batchUpdate" parameterType="java.util.List">
         update BMSTRUCK_STATEMENT
         set
         STATEMENT_ID=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.statementId,jdbcType=DECIMAL}
         </foreach>
         ,STATEMENT_NUMBER=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.statementNumber,jdbcType=VARCHAR}
         </foreach>
         ,COST_ID=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.costId,jdbcType=DECIMAL}
         </foreach>
         ,STATEMENT_PAYMENT_UNIT=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.statementPaymentUnit,jdbcType=VARCHAR}
         </foreach>
         ,STATEMENT_EXCLUD_TAX=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.statementExcludTax,jdbcType=DECIMAL}
         </foreach>
         ,STATEMENT_INCLUD_TAX=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.statementIncludTax,jdbcType=DECIMAL}
         </foreach>
         ,STATEMENT_REMARK=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.statementRemark,jdbcType=VARCHAR}
         </foreach>
         ,STATEMENT_SETTLEMENT_STATUS=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.statementSettlementStatus,jdbcType=VARCHAR}
         </foreach>
         ,INSERT_USERNAME=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
         </foreach>
         ,INSERT_TIME=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
         </foreach>
         ,UPDATE_USERNAME=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
         </foreach>
         ,UPDATE_TIME=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
         </foreach>
         ,INSERT_UPDATE_REMARK=
-        <foreach collection="list" item="item" index="index" separator=" " open="case STATEMENT_ID" close="end">
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
             when #{item.statementId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
         </foreach>
+        ,STATEMENT_TYPE=
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.statementType,jdbcType=DECIMAL}
+        </foreach>
+        ,EAS_AMOUNT=
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.easAmount,jdbcType=DECIMAL}
+        </foreach>
+        ,SUM_AMOUNT=
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.sumAmount,jdbcType=DECIMAL}
+        </foreach>
+        ,CAR_NUM=
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.carNum,jdbcType=DECIMAL}
+        </foreach>
+        ,CONSIGNEE_ID=
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.consigneeId,jdbcType=DECIMAL}
+        </foreach>
+        ,CARRIER_ID=
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.carrierId,jdbcType=DECIMAL}
+        </foreach>
+        ,PHOTO=
+        <foreach close="end" collection="list" index="index" item="item" open="case STATEMENT_ID" separator=" ">
+            when #{item.statementId,jdbcType=DECIMAL} then #{item.photo,jdbcType=VARCHAR}
+        </foreach>
         where STATEMENT_ID in
-        <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
+        <foreach close=")" collection="list" index="index" item="item" open="(" separator=",">
             #{item.statementId,jdbcType=DECIMAL}
         </foreach>
     </update>
     <delete id="batchDelete" parameterType="java.util.List">
         delete from BMSTRUCK_STATEMENT
         where STATEMENT_ID in
-        <foreach collection="list" item="id" open="(" close=")" separator=",">
+        <foreach close=")" collection="list" item="id" open="(" separator=",">
             #{id}
         </foreach>
     </delete>
@@ -596,4 +770,59 @@
                  left join bmstruck_details_order bdo on bsdl.list_id=bdo.details_id
         where bs.statement_id=#{statementId}
     </select>
+    <select id="getDetails" resultType="java.util.Map">
+        SELECT
+            SUM(BMSTRUCK_DETAILS_ORDER.DETAILS_AMOUNT) "sumAmount",
+            COUNT(DISTINCT ORDER_ID) "carNum"
+        FROM BMSTRUCK_DETAILS_ORDER
+        WHERE ORDER_ID IN
+        <foreach collection="orderList" item="orderId" open="(" close=")" separator=",">
+             #{orderId}
+        </foreach>
+    </select>
+    <select id="getDetailIds" resultType="java.util.Map">
+        SELECT DISTINCT
+        ASO.RECEIVE_ID "consigneeId",
+        ADSO.CARRIER_ID "carrierId"
+        FROM AMS_SALE_ORDER ASO
+        LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
+        ON ASOM.SALE_ORDER_ID = ASO.SALE_ORDER_ID
+        LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO
+        ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        LEFT JOIN AMS_SALE_TRUCKNO_MATERIAL ASTM
+        ON ASTM.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        LEFT JOIN AMS_SALE_MATERIAL ASM
+        ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
+        LEFT JOIN OMSTRUCK_ORDER OO
+        ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        WHERE OO.ORDER_ID IN
+        <foreach collection="orderList" item="orderId" open="(" close=")" separator=",">
+            #{orderId}
+        </foreach>
+    </select>
+    <update id="batchUpdateDetails">
+        UPDATE BMSTRUCK_DETAILS_ORDER
+        SET STATEMENT_ID = #{statementId}
+        WHERE ORDER_ID IN
+        <foreach collection="orderList" item="orderId" open="(" close=")" separator=",">
+            #{orderId}
+        </foreach>
+    </update>
+    <select id="getStatementIds" resultType="java.math.BigDecimal">
+        SELECT
+        DISTINCT STATEMENT_ID
+        FROM BMSTRUCK_DETAILS_ORDER
+        WHERE STATEMENT_ID IS NOT NULL AND ORDER_ID IN
+        <foreach collection="orderList" item="orderId" open="(" close=")" separator=",">
+            #{orderId}
+        </foreach>
+    </select>
+    <update id="updateAllBind">
+        UPDATE BMSTRUCK_DETAILS_ORDER
+        SET STATEMENT_ID = NULL
+        WHERE STATEMENT_ID IN
+        <foreach collection="statementIds" item="statementId" open="(" close=")" separator=",">
+            #{statementId}
+        </foreach>
+    </update>
 </mapper>