Browse Source

添加异常单

qzyReal 2 years ago
parent
commit
6f41e82290

+ 1 - 1
sp-admin/sa-frame/menu-list.js

@@ -318,7 +318,7 @@ var menuList = [{
 					},
 					{
 						id: 'tb-supplement-push',
-						name: '推送流程',
+						name: '发起流程',
 						isShow: false
 					},
 				]

+ 7 - 5
sp-admin/sa-view/tb-business/tb-car-disincle-info.html

@@ -85,20 +85,22 @@
 										<sa-td name="类型" prop="carType"></sa-td>
 										<sa-td name="载重(kg)" prop="netWeight"></sa-td>
 										<sa-td name="规格(米)" prop="carSize"></sa-td>
-										<sa-td width="130" name="支付状态" prop="payType">
-										</sa-td>
+
 										<sa-td width="120" name="车辆状态" prop="isLock" type="enum"
 											:jv="{1: '锁定[#ff0000]', 0: '正常[#005500]'}">
 										</sa-td>
-
+										<sa-td name="入场时间" prop="realInTime" width=180></sa-td>
+										<sa-td name="离场时间" prop="realOutTime" width=180></sa-td>
 										<el-table-column label="停车费">
 											<template slot-scope="s">
 												<label v-if="s.row.money">{{s.row.money}}</label>
 												<label v-else>-</label>
 											</template>
 										</el-table-column>
-										<sa-td name="入场时间" prop="realInTime" width=180></sa-td>
-										<sa-td name="离场时间" prop="realOutTime" width=180></sa-td>
+										<sa-td width="130" name="支付状态" prop="payType">
+										</sa-td>
+										<el-table-column prop="payTime" label="支付时间" width="150">
+										</el-table-column>
 									</el-table>
 								</el-collapse-item>
 							</el-collapse>

+ 16 - 31
sp-admin/sa-view/tb-business/tb-car-supplement-select.html

@@ -64,6 +64,15 @@
 												</el-input>
 											</div>
 											<div class="c-item">
+												<label class="c-label">支付状态:</label>
+												<el-select v-model="m.payStatus" placeholder="请选择" >
+													<el-option label="未支付" :value="1">
+													</el-option>
+													<el-option label="已支付" :value="3">
+													</el-option>
+												</el-select>
+											</div>
+											<div class="c-item">
 												<label class="c-label"><span style="color: red;">*</span>业务项目:</label>
 												<el-select v-model="m.goodsId" placeholder="请选择" disabled>
 													<el-option v-for="item in goodsList" :key="item.id"
@@ -79,15 +88,7 @@
 													:readonly="goods.needDeclare==1" disabled>
 												</el-input>
 											</div>
-											<div class="c-item">
-												<label class="c-label">支付状态:</label>
-												<el-select v-model="m.payStatus" placeholder="请选择" >
-													<el-option label="未支付" :value="1">
-													</el-option>
-													<el-option label="已支付" :value="3">
-													</el-option>
-												</el-select>
-											</div>
+										
 										</el-col>
 										<el-col span=8>
 											<div class="c-item" v-if="goods.needCustomer">
@@ -108,6 +109,11 @@
 											
 										</el-col>
 										<el-col span=8>
+											<div class="c-item" v-if="m.payStatus===3">
+												<label class="c-label">支付时间:</label>
+												<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+													v-model="m.payTime"></el-date-picker>
+											</div>
 											<div class="c-item">
 												<label class="c-label">作业人员:</label>
 												<el-input v-model="m.operator" placeholder="作业人员" disabled>
@@ -119,11 +125,7 @@
 												<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss" disabled
 													v-model="m.operateTime"></el-date-picker>
 											</div>
-											<div class="c-item" v-if="m.payStatus===3">
-												<label class="c-label">支付时间:</label>
-												<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
-													v-model="m.payTime"></el-date-picker>
-											</div>
+											
 										</el-col>
 									</el-row>
 								</div>
@@ -714,23 +716,6 @@
 							}
 
 						}
-						let typeList = this.itemTypeList;
-						let selectList = [];
-						for (let i in typeList) {
-							let type = typeList[i];
-							if (type.itemId) {
-								let obj = {
-									typeId: type.id,
-									typeName: type.name,
-									id: type.itemId,
-									num: type.num,
-									price: type.price,
-									remark: type.remark
-								}
-								selectList.push(obj);
-							}
-						}
-						m.itemJson = JSON.stringify(selectList);
 						m.carJson = JSON.stringify(carList);
 						let chinaCarNo = carList
 							.filter(car => sa.isCarNo(car.carNo.toUpperCase()))

+ 72 - 9
sp-admin/sa-view/tb-business/tb-supplement-add.html

@@ -45,6 +45,9 @@
 			.china-car-size .el-input__inner {
 				width: 130px;
 			}
+			.car-time .el-input__inner {
+				width: 170px;
+			}
 		</style>
 	</head>
 	<body>
@@ -82,8 +85,23 @@
 													<i class="el-icon-folder-add"></i>
 												</div>
 											</div>
+											<div class="c-item">
+												<label class="c-label"><span style="color: red;">*</span>补录原因:</label>
+												<el-input v-model="m.supplementReason" placeholder="补录原因" clearable>
+												</el-input>
+											</div>
 										</el-col>
 										<el-col span=8>
+											<div class="c-item">
+												<label class="c-label">支付状态:</label>
+												<el-select v-model="m.payStatus" placeholder="请选择" >
+													<el-option label="未支付" :value="1">
+													</el-option>
+													<el-option label="已支付" :value="3">
+													</el-option>
+												</el-select>
+											</div>
+											
 											<div class="c-item" v-if="goods.needCustomer">
 												<label class="c-label"><span style="color: red;">*</span>客户:</label>
 												<el-select
@@ -103,6 +121,11 @@
 											</div>
 										</el-col>
 										<el-col span=8>
+											<div class="c-item" v-if="m.payStatus===3">
+												<label class="c-label">支付时间:</label>
+												<el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+													v-model="m.payTime"></el-date-picker>
+											</div>
 											<div class="c-item">
 												<label class="c-label">作业人员:</label>
 												<el-input v-model="m.operator" placeholder="作业人员" clearable>
@@ -128,17 +151,45 @@
 									</el-button>
 								</div>
 								<el-table :data="car.list">
-									<el-table-column type="index" width="50" label="序号">
+									<el-table-column prop="carNo" label="车牌号" width="90">
 									</el-table-column>
-									<el-table-column prop="carNo" label="车牌号">
+									<el-table-column prop="carSize" label="规格" width="80">
 									</el-table-column>
-									<el-table-column prop="carSize" label="规格(米)">
+									<el-table-column prop="carType" label="类型" width="80">
 									</el-table-column>
-									<el-table-column prop="carType" label="类型">
+									<el-table-column prop="netWeight" label="载重" width="80">
 									</el-table-column>
-									<el-table-column prop="netWeight" label="载重(kg)">
+									<el-table-column prop="realInTime" label="入场时间" align="center">
+										<template slot-scope="s">
+											<el-date-picker class="car-time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+												v-model="s.row.realInTime"></el-date-picker>
+										</template>
 									</el-table-column>
-									<el-table-column label="操作">
+									<el-table-column prop="realOutTime" label="离场时间" align="center" >
+										<template slot-scope="s">
+											<el-date-picker class="car-time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+												v-model="s.row.realOutTime"></el-date-picker>
+										</template>
+									</el-table-column>
+									<el-table-column prop="payType" label="支付" align="center" >
+										<template slot-scope="s">
+											<el-select class="car-time" v-model="s.row.payType" placeholder="请选择" >
+												<el-option label="未支付" value="未支付">
+												</el-option>
+												<el-option label="已支付" value="已支付">
+												</el-option>
+												<el-option label="免费" value="免费">
+												</el-option>
+											</el-select>
+										</template>
+									</el-table-column>
+									<el-table-column prop="payTime" label="支付时间" align="center" >
+										<template slot-scope="s">
+											<el-date-picker class="car-time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" :disabled="s.row.payType!=='已支付'"
+												v-model="s.row.payTime"></el-date-picker>
+										</template>
+									</el-table-column>
+									<el-table-column label="操作" width="120">
 										<template slot-scope="s">
 											<el-button class="c-btn" type="info" @click="editFn(s.row)">修改</el-button>
 											<el-button class="c-btn" type="danger" @click="deleteFn(s.row)">删除
@@ -200,7 +251,7 @@
 				<el-button type="primary" @click="ok()">确定</el-button>
 				<el-button @click="closeFn()">取消</el-button>
 			</div>
-			<el-dialog title="车辆录入" :visible.sync="car.visible" width="400">
+			<el-dialog title="车辆录入" :visible.sync="car.visible" width="300">
 				<span>
 					<el-form label-position="left">
 						<div class="c-item">
@@ -492,7 +543,8 @@
 							carNo: form.carNo.toUpperCase(),
 							carType: carType,
 							carSize: carSize,
-							netWeight: netWeight
+							netWeight: netWeight,
+							payType:'未支付'
 						}
 						this.car.list.push(car);
 						this.car.visible = false;
@@ -672,6 +724,10 @@
 							sa.error('请选择客户');
 							return false;
 						}
+						if (!m.supplementReason) {
+							sa.error('请填写补录原因');
+							return false;
+						}
 						if (goods.needOperateTime == 1 && !m.operateTime) {
 							sa.error('请选择作业时间');
 							return false;
@@ -692,7 +748,14 @@
 								sa.error('请补充' + car.carNo + '规格');
 								return;
 							}
-
+							if(!car.realInTime){
+								sa.error('请填写入场时间')
+								return;
+							}
+							if(!car.realOutTime){
+								sa.error('请填写离场时间')
+								return;
+							}
 						}
 						let typeList = this.itemTypeList;
 						let selectList = [];

+ 18 - 7
sp-admin/sa-view/tb-business/tb-supplement-list.html

@@ -55,8 +55,8 @@
 					</el-button>
 					<el-button v-if="sa.isAuth('tb-flex-business-add')" size="mini" type="primary" @click="add()">
 						新增</el-button>
-						<el-button v-if="sa.isAuth('tb-flex-business-add')" size="mini"
-							type="primary" @click="selectFn">选择异常业务单</el-button>
+					<el-button v-if="sa.isAuth('tb-flex-business-add')" size="mini" type="primary" @click="selectFn">
+						选择异常业务单</el-button>
 					<br />
 				</el-form>
 				<!-- ------------- 数据列表 ------------- -->
@@ -85,6 +85,9 @@
 					<el-table-column label="操作" width="415px" fixed="right">
 						<template slot-scope="s">
 							<el-button class="c-btn" type="success" @click="get(s.row)">查看</el-button>
+							<el-button class="c-btn" type="primary" 
+							v-if="(currentCustomerId=='1'||sa.isAuth('tb-supplement-push'))&&(s.row.sendOa==0||s.row.oaResult==='审批驳回')"
+							@click="applyFn(s.row)">发起审批</el-button>
 							<el-button class="c-btn" type="primary"
 								v-if="(currentCustomerId=='1'||sa.isAuth('tb-supplement-edit'))&&(s.row.sendOa==0||s.row.oaResult==='审批驳回')"
 								@click="update(s.row)">
@@ -131,7 +134,7 @@
 							<sa-td name="创建人" prop="createBy" width="100"></sa-td>
 							<el-table-column label="操作" width="100px" fixed="right">
 								<template slot-scope="s">
-								<el-button class="c-btn" type="success" @click="doSelect(s.row)">选择</el-button>
+									<el-button class="c-btn" type="success" @click="doSelect(s.row)">选择</el-button>
 								</template>
 							</el-table-column>
 						</el-table>
@@ -188,7 +191,7 @@
 						carNo: '', // 车牌号
 						goodsId: '',
 						pageNo: 1, // 当前页 
-						pageSize: 20, // 页大小 
+						pageSize: 23, // 页大小 
 						sortType: 0 // 排序方式 
 					},
 					dataCount: 0,
@@ -200,6 +203,14 @@
 					goodsList: [],
 				},
 				methods: {
+					applyFn(data) {
+						sa.confirm('是否确认发起OA审批流程?', function() {
+							sa.ajax('/TbBusiness/applyOA?id=' + data.id, function(res) {
+								sa.ok('发起成功');
+								this.getErrorList();
+							}.bind(this))
+						}.bind(this));
+					},
 					selectFn() {
 						this.form.visible = true;
 						this.getErrorList()
@@ -209,13 +220,13 @@
 						this.getErrorList();
 					},
 					getErrorList() {
-						sa.ajaxNoLoading('/TbBusiness/getOtherBusiness', sa.removeNull(this.form.p), function(res) {
+						sa.ajax('/TbBusiness/getOtherBusiness', sa.removeNull(this.form.p), function(res) {
 							this.form.dataList = res.data; // 数据
 							this.form.dataCount = res.dataCount; // 数据总数 
 						}.bind(this));
 					},
 					doSelect(data) {
-						this.form.visible=false;
+						this.form.visible = false;
 						sa.showIframe('完善补录单', 'tb-car-supplement-select.html?id=' + data.id, '1280px', '90%');
 					},
 					getGoodsList() {
@@ -233,7 +244,7 @@
 						sa.showIframe('补录单详情', 'tb-car-disincle-info.html?id=' + data.id, '1050px', '90%');
 					},
 					add: function(data) {
-						sa.showIframe('新增补录单', 'tb-supplement-add.html?id=-1', '1080px', '90%');
+						sa.showIframe('新增补录单', 'tb-supplement-add.html?id=-1', '1280px', '90%');
 					},
 					update(data) {
 						sa.showIframe('修改补录单', 'tb-car-disincle-edit.html?id=' + data.id, '1080px', '90%');

+ 1 - 0
sp-server/src/main/java/com/pj/project/tb_business/TbBusiness.java

@@ -53,6 +53,7 @@ public class TbBusiness extends Model<TbBusiness> implements Serializable {
     public static final String TB_SUPPLEMENT_ADD = "tb-supplement-add";
     public static final String TB_SUPPLEMENT_EDIT = "tb-supplement-edit";
     public static final String TB_SUPPLEMENT_DEL = "tb-supplement-del";
+    public static final String TB_SUPPLEMENT_PUSH = "tb-supplement-push";
 
 
 

+ 20 - 4
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessController.java

@@ -327,23 +327,23 @@ public class TbBusinessController {
      * @return
      */
     @RequestMapping("selectErrorBusiness")
-    @SaCheckPermission(value = TbBusiness.TB_SUPPLEMENT_ADD)
+    @SaCheckPermission(value = {TbBusiness.TB_SUPPLEMENT_ADD, TbBusiness.TB_SUPPLEMENT_PUSH})
     public AjaxJson selectErrorBusiness(ErrorBusinessBO errorBusinessBO) {
         if (StrUtil.isEmpty(errorBusinessBO.getSupplementReason())) {
             throw new AjaxError("填写补录原因");
         }
-        List<TbItem> items = JSONUtil.toList(errorBusinessBO.getItemJson(), TbItem.class);
         List<TbBusinessCar> cars = JSONUtil.toList(errorBusinessBO.getCarJson(), TbBusinessCar.class);
-        errorBusinessBO.setItems(items).setCars(cars);
+        errorBusinessBO.setCars(cars);
         errorBusinessBO.setSupplementBy(StpUserUtil.getAdmin().getNickname());
         String currentCustomerId = StpUserUtil.getCustomerId();
         errorBusinessBO.setSupplementBy(StpUserUtil.getAdmin().getNickname());
-        tbBusinessService.selectErrorBusiness(errorBusinessBO,currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId()));
+        tbBusinessService.selectErrorBusiness(errorBusinessBO, currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId()));
         return AjaxJson.getSuccess();
     }
 
     /**
      * 添加异常单
+     *
      * @param errorBusinessBO
      * @return
      */
@@ -357,6 +357,22 @@ public class TbBusinessController {
         tbBusinessService.addErrorBusiness(errorBusinessBO);
         return AjaxJson.getSuccess();
     }
+
+    /**
+     * 发起OA流程
+     * @param id
+     * @return
+     */
+    @RequestMapping("applyOA")
+    @SaCheckPermission(value = {TbBusiness.TB_SUPPLEMENT_ADD, TbBusiness.TB_SUPPLEMENT_PUSH})
+    public AjaxJson applyOA(@RequestParam String id) {
+        String currentCustomerId = StpUserUtil.getCustomerId();
+        if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
+           return AjaxJson.getError("您无权发起流程");
+        }
+        tbBusinessService.applyOA(id,StpUserUtil.getAdmin().getNickname());
+        return AjaxJson.getSuccess();
+    }
     // ------------------------- 前端接口 -------------------------
 
 

+ 1 - 0
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessMapper.xml

@@ -77,6 +77,7 @@
             <when test='sortType == 20'>out_day_time desc</when>
             <when test='sortType == 21'>part_money desc</when>
             <when test='sortType == 22'>part_time desc</when>
+            <when test='sortType == 23'>supplement_time desc</when>
             <otherwise>id desc</otherwise>
         </choose>
     </select>

+ 84 - 44
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java

@@ -998,11 +998,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         return list.isEmpty() ? null : list.get(0);
     }
 
-    public List<TbBusiness> getPay(String day) {
-        QueryWrapper<TbBusiness> ew = new QueryWrapper<>();
-        ew.eq("date_format(pay_time,'%Y-%m-%d')", day).orderByDesc("id");
-        return this.list(ew);
-    }
+
 
     /**
      * 选择异常单发送
@@ -1015,17 +1011,34 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         if (tbBusiness == null) {
             throw new AjaxError("业务已被删除");
         }
+        String businessId = tbBusiness.getId();
+        List<TbBusinessItem> items = tbBusinessItemService.findByBusinessId(businessId);
         tbBusiness.setPayStatus(errorBusinessBO.getPayStatus())
-        .setSupplement(1)
+                .setSupplement(1)
                 .setSupplementBy(errorBusinessBO.getSupplementBy())
                 .setSupplementTime(new Date())
                 .setSupplementReason(errorBusinessBO.getSupplementReason());
-        if (TbBusiness.PayStatus.HAS_PAY_CONFIRM.getCode()==errorBusinessBO.getPayStatus()) {
+        if (TbBusiness.PayStatus.HAS_PAY_CONFIRM.getCode() == errorBusinessBO.getPayStatus()) {
             tbBusiness.setPayMoney(tbBusiness.getItemPrice())
                     .setPayTime(errorBusinessBO.getPayTime());
+            items.forEach(item -> item.setPayTime(errorBusinessBO.getPayTime()).setPayStatus(1));
+            tbBusinessItemService.updateBatchById(items);
         }
         List<TbBusinessCar> tbBusinessCars = errorBusinessBO.getCars();
-        for (TbBusinessCar tbBusinessCar : tbBusinessCars) {
+        tbBusinessCars.forEach(this::handlerCarPay);
+        tbBusinessCarService.updateBatchById(tbBusinessCars);
+        if (isAdmin) {
+            //发起审批
+            sendOA(tbBusiness, items, tbBusinessCars, errorBusinessBO.getSupplementBy());
+        }
+        this.updateById(tbBusiness);
+    }
+
+    /**
+     * 处理车辆支付
+     * @param tbBusinessCar
+     */
+    private void handlerCarPay(TbBusinessCar tbBusinessCar) {
             String carNo = tbBusinessCar.getCarNo();
             String payType = tbBusinessCar.getPayType();
             Date payTime = tbBusinessCar.getPayTime();
@@ -1046,25 +1059,29 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             //计算停车费
             BigDecimal parkMoney = this.calculationPartMoney(inTime, outTime);
             tbBusinessCar.setMoney(parkMoney);
+    }
+
+    /**
+     * 发起流程审批
+     *
+     * @param tbBusiness
+     * @param items
+     * @param tbBusinessCars
+     * @param sendBy
+     */
+    private void sendOA(TbBusiness tbBusiness, List<TbBusinessItem> items, List<TbBusinessCar> tbBusinessCars, String sendBy) {
+        ParamsBO paramsBO = buildParams(tbBusiness, items, tbBusinessCars);
+        String json = JSONUtil.toJsonStr(paramsBO);
+        log.info("构建流程表单数据:{}", json);
+        String resp = HttpUtil.createPost(oaConfig.getUrl())
+                .timeout(2000).setReadTimeout(3000).body(json)
+                .execute().body();
+        log.info("请求返回:{}", resp);
+        OAResultBO oaResultBO = JSONUtil.toBean(resp, OAResultBO.class);
+        if (oaResultBO.getSuccess() && oaResultBO.getCode() == 200) {
+            tbBusiness.setSendOa(1).setSendTime(new Date()).setSendBy(sendBy)
+                    .setOaFdId(oaResultBO.getData().getFdId());
         }
-        tbBusinessCarService.updateBatchById(tbBusinessCars);
-        if (isAdmin) {
-            String businessId = tbBusiness.getId();
-            List<TbBusinessItem> items = tbBusinessItemService.findByBusinessId(businessId);
-            ParamsBO paramsBO = buildParams(tbBusiness, items, tbBusinessCars);
-            String json = JSONUtil.toJsonStr(paramsBO);
-            log.info("构建流程表单数据:{}", json);
-        /*    String resp = HttpUtil.createPost(oaConfig.getUrl())
-                    .timeout(2000).setReadTimeout(3000).body(json)
-                    .execute().body();
-            log.info("请求返回:{}", resp);
-            OAResultBO oaResultBO = JSONUtil.toBean(resp, OAResultBO.class);
-            if (oaResultBO.getSuccess() && oaResultBO.getCode() == 200) {
-                tbBusiness.setSendOa(1).setSendTime(new Date()).setSendBy(errorBusinessBO.getSupplementBy())
-                        .setOaFdId(oaResultBO.getData().getFdId());
-            }*/
-        }
-        this.updateById(tbBusiness);
     }
 
     /**
@@ -1096,6 +1113,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         ParamsBO.DataBO.FormValuesBO.SpecificBusinessItemsBO specificBusinessItemsBO = buildItemPrams(items);
         formValuesBO.setSpecificBusinessItems(specificBusinessItemsBO);
         dataBO.setFormValues(formValuesBO);
+        paramsBO.setData(dataBO);
         return paramsBO;
     }
 
@@ -1122,7 +1140,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             unitList.add(item.getUnit());
             numList.add(item.getNum());
             payStatusList.add(item.getPayStatus() == 1 ? "已支付" : "未支付");
-            payTimeList.add(DateUtil.format(item.getPayTime(), "yyyy-MM-dd HH:mm:ss"));
+            payTimeList.add(item.getPayTime()==null?"-":DateUtil.format(item.getPayTime(), "yyyy-MM-dd HH:mm:ss"));
             remarkList.add(StrUtil.isEmpty(item.getRemark()) ? "-" : item.getRemark());
         });
         specificBusinessItemsBO.setChargingItem(itemTypeNameList)
@@ -1197,31 +1215,38 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         TbGoods tbGoods = tbGoodsService.getById(errorBusinessBO.getGoodsId());
         TbBusiness tbBusiness = new TbBusiness();
         String customerId = errorBusinessBO.getCustomerId();
-        tbBusiness.setCreateBy(StpUserUtil.getAdmin().getName());
+        tbBusiness.setCreateBy(StpUserUtil.getAdmin().getNickname());
         tbBusiness.setPayStep(tbGoods.getPayStep());
         TbCostomer tbCostomer = tbCostomerService.getById(customerId);
         if (tbCostomer != null) {
             tbBusiness.setCustomerId(customerId).setCustomerName(tbCostomer.getName());
         }
+        boolean businessIsPay=TbBusiness.PayStatus.HAS_PAY_CONFIRM.getCode() == errorBusinessBO.getPayStatus();
+        Date businessPayTime=errorBusinessBO.getPayTime();
+
         BigDecimal price = new BigDecimal("0");
         List<TbBusinessItem> itemList = new ArrayList<>();
         String no = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4);
         int index = 1;
         for (TbItem tbItem : tbItems) {
             TbItem db = tbItemService.getById(tbItem.getId());
-            TbBusinessItem item = new TbBusinessItem();
+            TbBusinessItem tbBusinessItem = new TbBusinessItem();
             int num = tbItem.getNum();
             String typeId = tbItem.getTypeId();
             TbItemType tbItemType = tbItemTypeService.getById(typeId);
             BigDecimal itemTotalPrice = tbItem.getPrice().multiply(new BigDecimal(num));
-            item.setNo(no + "0" + index).setPayTypeName(db.getPayTypeName()).setPayType(db.getPayType())
-                    .setBusinessType(db.getBusinessType()).setTaxRate(NumberUtil.div(db.getTaxRate().doubleValue(), 100D, 2));
-            item.setItemCode(db.getItemCode()).setNum(num + "").setItemId(db.getId())
+            tbBusinessItem.setNo(no + "0" + index).setPayTypeName(db.getPayTypeName()).setPayType(db.getPayType())
+                    .setBusinessType(db.getBusinessType()).setTaxRate(NumberUtil.div(db.getTaxRate().doubleValue(), 100D, 2))
+                    .setItemCode(db.getItemCode()).setNum(num + "").setItemId(db.getId())
                     .setItemName(db.getItemName()).setItemPrice(db.getPrice()).setRemark(tbItem.getRemark())
                     .setItemTypeId(typeId).setItemTypeName(tbItemType.getName())
                     .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now);
             price = price.add(itemTotalPrice);
-            itemList.add(item);
+            if (businessIsPay){
+                tbBusinessItem.setPayTime(businessPayTime)
+                        .setPayStatus(1);
+            }
+            itemList.add(tbBusinessItem);
             index++;
         }
         String declareNo = errorBusinessBO.getDeclareNo();
@@ -1234,6 +1259,10 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         tbBusiness.setCreateTime(now).setCreateByCustomerId(StpUserUtil.getCustomerId())
                 .setItemPrice(price).setTotalMoney(price).setOwner(errorBusinessBO.getOwner());
         tbBusiness.setChinaCarNo(errorBusinessBO.getChinaCarNo());
+        if (businessIsPay) {//如果已支付
+            tbBusiness.setPayMoney(tbBusiness.getItemPrice())
+                    .setPayTime(businessPayTime);
+        }
         this.save(tbBusiness);
         Integer chinaCarPay = tbGoods.getChinaCarPay();
         Integer vietnamCarPay = tbGoods.getVietnamCarPay();
@@ -1244,30 +1273,29 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             if (StrUtil.isEmpty(carType)) {
                 throw new BusinessException(carNo + "类型不能为空");
             }
-            //新增放行记录
-            TbBusinessCar db = new TbBusinessCar();
-            db.setCreateTime(now).setPay(0).setNo(carBuseinssNo + RandomUtil.randomNumbers(4));
-            db.setPayType(TbBusinessCar.PayTypeEnum.NO_PAY_TYPE.getType());
+            
+            car.setCreateTime(now).setNo(carBuseinssNo + RandomUtil.randomNumbers(4));
             if ((TbItem.ItemTypeEnum.EMPTY_TYPE.getType().equals(carType) && chinaCarPay == 0)
                     || (TbItem.ItemTypeEnum.WEIGHT_TYPE.getType().equals(carType) && vietnamCarPay == 0)) {
-                db.setPayType(TbBusinessCar.PayTypeEnum.FEE_TYPE.getType());
+                car.setPayType(TbBusinessCar.PayTypeEnum.FEE_TYPE.getType());
             }
             TbCar tbCar = tbCarService.findByCardNo(carNo);
             if (tbCar != null) {
-                db.setCarCompany(tbCar.getCustomerName());
+                car.setCarCompany(tbCar.getCustomerName());
                 if (!TbCar.CarTypeEnum.BUSINESS_CAR.getType().equals(tbCar.getCarType())) {
-                    db.setPayType(TbBusinessCar.PayTypeEnum.FEE_TYPE.getType());
+                    car.setPayType(TbBusinessCar.PayTypeEnum.FEE_TYPE.getType());
                 }
             }
-            db.setCarNo(carNo).setIsLock(0);
-            db.setCarSize(car.getCarSize())
+            car.setCarNo(carNo).setIsLock(0);
+            car.setCarSize(car.getCarSize())
                     .setTimeUpdate(now).setCarType(car.getCarType())
                     .setNetWeight(car.getNetWeight())
                     .setCustomerId(customerId)
                     .setNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4));
-            tbBusinessCarService.save(db);
+            //新增放行记录
+            tbBusinessCarService.save(car);
             RelationBusinessCar relationBusinessCar = new RelationBusinessCar();
-            relationBusinessCar.setBusinessId(tbBusiness.getId()).setBusinessCarId(db.getId());
+            relationBusinessCar.setBusinessId(tbBusiness.getId()).setBusinessCarId(car.getId());
             relationBusinessCarService.save(relationBusinessCar);
         }
         if (StrUtil.isNotEmpty(declareNo)) {
@@ -1279,4 +1307,16 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         tbBusinessItemService.saveBatch(itemList);
 
     }
+
+    /**
+     * 单独发起审批
+     * @param id
+     */
+    public void applyOA(String id, String sendBy) {
+        TbBusiness tbBusiness = this.getById(id);
+        List<TbBusinessItem> items = tbBusinessItemService.findByBusinessId(id);
+        List<TbBusinessCar> tbBusinessCars = tbBusinessCarService.findOtherBusinessCar(id);
+        sendOA(tbBusiness, items, tbBusinessCars, sendBy);
+        this.updateById(tbBusiness);
+    }
 }

+ 1 - 1
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItem.java

@@ -89,7 +89,7 @@ public class TbBusinessItem extends Model<TbBusinessItem> implements Serializabl
 	private String unit;
 	private BigDecimal total;
 	private String ticket;
-
+	//支付状态
 	private Integer payStatus;
 	private Date payTime;
 	private Date createTime;