师傅发起完单添加完单图片及备注

This commit is contained in:
donqi 2022-07-28 02:00:18 +08:00
parent dbf512677c
commit c1da7c7eca
13 changed files with 187 additions and 3 deletions

View File

@ -191,7 +191,7 @@ public class OrderController extends BaseController {
od.setRevTime(om.getRevTime()); od.setRevTime(om.getRevTime());
od.setExpectTimeStart(om.getExpectTimeStart()); od.setExpectTimeStart(om.getExpectTimeStart());
od.setExpectTimeEnd(om.getExpectTimeEnd()); od.setExpectTimeEnd(om.getExpectTimeEnd());
od.setRemark(om.getRemark()); // od.setRemark(om.getRemark());
orderDetailService.insertOrderDetail(od); orderDetailService.insertOrderDetail(od);
// 批量生成订单商品 // 批量生成订单商品

View File

@ -6,6 +6,9 @@ import com.ghy.common.core.controller.BaseController;
import com.ghy.common.core.domain.AjaxResult; import com.ghy.common.core.domain.AjaxResult;
import com.ghy.common.core.page.TableDataInfo; import com.ghy.common.core.page.TableDataInfo;
import com.ghy.common.enums.BusinessType; import com.ghy.common.enums.BusinessType;
import com.ghy.common.enums.ImgType;
import com.ghy.common.enums.OrderStatus;
import com.ghy.common.enums.PayStatus;
import com.ghy.common.utils.ExceptionUtil; import com.ghy.common.utils.ExceptionUtil;
import com.ghy.common.utils.poi.ExcelUtil; import com.ghy.common.utils.poi.ExcelUtil;
import com.ghy.customer.domain.Customer; import com.ghy.customer.domain.Customer;
@ -13,12 +16,15 @@ import com.ghy.customer.domain.CustomerAddress;
import com.ghy.customer.service.CustomerAddressService; import com.ghy.customer.service.CustomerAddressService;
import com.ghy.customer.service.CustomerService; import com.ghy.customer.service.CustomerService;
import com.ghy.goods.domain.Goods; import com.ghy.goods.domain.Goods;
import com.ghy.goods.domain.GoodsImgs;
import com.ghy.goods.domain.GoodsStandard; import com.ghy.goods.domain.GoodsStandard;
import com.ghy.goods.service.GoodsImgsService;
import com.ghy.goods.service.GoodsService; import com.ghy.goods.service.GoodsService;
import com.ghy.goods.service.GoodsStandardService; import com.ghy.goods.service.GoodsStandardService;
import com.ghy.order.domain.OrderDetail; import com.ghy.order.domain.OrderDetail;
import com.ghy.order.domain.OrderGoods; import com.ghy.order.domain.OrderGoods;
import com.ghy.order.domain.OrderMaster; import com.ghy.order.domain.OrderMaster;
import com.ghy.order.request.OrderProcessRequest;
import com.ghy.order.service.OrderDetailService; import com.ghy.order.service.OrderDetailService;
import com.ghy.order.service.OrderGoodsService; import com.ghy.order.service.OrderGoodsService;
import com.ghy.order.service.OrderMasterService; import com.ghy.order.service.OrderMasterService;
@ -31,15 +37,19 @@ import com.ghy.web.pojo.vo.OrderStandard;
import com.ghy.worker.domain.Worker; import com.ghy.worker.domain.Worker;
import com.ghy.worker.service.WorkerService; import com.ghy.worker.service.WorkerService;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.util.Assert;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 详细订单API * 详细订单API
@ -69,6 +79,8 @@ public class OrderDetailController extends BaseController {
@Autowired @Autowired
private GoodsService goodsService; private GoodsService goodsService;
@Autowired @Autowired
private GoodsImgsService goodsImgsService;
@Autowired
private GoodsStandardService goodsStandardService; private GoodsStandardService goodsStandardService;
@Autowired @Autowired
private FinancialDetailService financialDetailService; private FinancialDetailService financialDetailService;
@ -122,6 +134,17 @@ public class OrderDetailController extends BaseController {
SysArea sysArea = sysAreaService.selectById(customerAddress.getCountryId()); SysArea sysArea = sysAreaService.selectById(customerAddress.getCountryId());
String completeAddress = sysArea.getMergerName().replaceAll(",", "") + customerAddress.getAddress(); String completeAddress = sysArea.getMergerName().replaceAll(",", "") + customerAddress.getAddress();
// 完工图片
List<String> finishImgList = null;
if (detail.getOrderStatus() > 3) {
GoodsImgs qryImgsObj = new GoodsImgs();
qryImgsObj.setRemark(request.getId().toString());
qryImgsObj.setImgType(ImgType.FINISH_IMG.getId());
qryImgsObj.setGoodsId(0l);
List<GoodsImgs> goodsImgs = goodsImgsService.qryGoodsImgs(qryImgsObj);
finishImgList = goodsImgs.stream().map(GoodsImgs::getImgUrl).collect(Collectors.toList());
}
for (OrderGoods orderGoods : orderStandardList) { for (OrderGoods orderGoods : orderStandardList) {
OrderStandard orderStandard = new OrderStandard(); OrderStandard orderStandard = new OrderStandard();
orderStandard.setStandardName(orderGoods.getGoodsName()); orderStandard.setStandardName(orderGoods.getGoodsName());
@ -158,6 +181,8 @@ public class OrderDetailController extends BaseController {
orderListResponse.setWorkFinishTime(detail.getWorkFinishTime()); orderListResponse.setWorkFinishTime(detail.getWorkFinishTime());
orderListResponse.setRemark(goods.getRemark()); orderListResponse.setRemark(goods.getRemark());
orderListResponse.setCustomerRemark(orderMaster.getRemark()); orderListResponse.setCustomerRemark(orderMaster.getRemark());
orderListResponse.setFinishImgList(finishImgList);
orderListResponse.setWorkerRemark(detail.getRemark());
return AjaxResult.success(orderListResponse); return AjaxResult.success(orderListResponse);
} catch (Exception e) { } catch (Exception e) {
@ -240,6 +265,7 @@ public class OrderDetailController extends BaseController {
orderListResponse.setWorkFinishTime(detail.getWorkFinishTime()); orderListResponse.setWorkFinishTime(detail.getWorkFinishTime());
orderListResponse.setRemark(goods.getRemark()); orderListResponse.setRemark(goods.getRemark());
orderListResponse.setCustomerRemark(orderMaster.getRemark()); orderListResponse.setCustomerRemark(orderMaster.getRemark());
orderListResponse.setOrderType(detail.getOrderType());
orderListResponses.add(orderListResponse); orderListResponses.add(orderListResponse);
}); });
return voDataTable(orderListResponses, list); return voDataTable(orderListResponses, list);
@ -337,4 +363,46 @@ public class OrderDetailController extends BaseController {
orderDetailService.cancelAgree(orderDetailId, agree); orderDetailService.cancelAgree(orderDetailId, agree);
return AjaxResult.success(); return AjaxResult.success();
} }
/**
* 师傅发起完单
*
* @param request 完单发起请求对象
*/
@PostMapping("/app/applyFinishOrder")
@ResponseBody
@Transactional(rollbackFor = Exception.class)
public AjaxResult applyFinishOrder(@RequestBody OrderProcessRequest request) throws Exception {
// 判断工单状态是否为服务中以及是否已支付
OrderDetail orderDetail = orderDetailService.selectById(request.getOrderDetailId());
OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId());
if (orderDetail.getOrderStatus() != OrderStatus.SERVER.code()
|| orderMaster.getPayStatus() != PayStatus.PAID.getCode()) {
return AjaxResult.error("未支付订单或非服务中订单,发起完单失败");
}
// 存储完单图
List<GoodsImgs> finishImgObjList = new ArrayList<GoodsImgs>();
for (String imgUrl: request.getFinishImgList()) {
GoodsImgs finishImgObj = new GoodsImgs();
finishImgObj.setGoodsId(0l);
finishImgObj.setImgType(ImgType.FINISH_IMG.getId());
finishImgObj.setImgUrl(imgUrl);
finishImgObj.setRemark(String.valueOf(request.getOrderDetailId()));
finishImgObjList.add(finishImgObj);
}
int insertedRows = goodsImgsService.batchInsert(finishImgObjList);
Assert.isTrue(insertedRows > 0, "完单图入库失败request=" + request);
// 修改子单状态为完单待确认状态更新完单时间
OrderDetail updateOrderDetail = new OrderDetail();
updateOrderDetail.setId(request.getOrderDetailId());
updateOrderDetail.setWorkFinishTime(new Date());
updateOrderDetail.setOrderStatus(OrderStatus.FINISH_CHECK.code());
updateOrderDetail.setRemark(request.getRemark());
int affectedRow = orderDetailService.updateOrderDetail(updateOrderDetail);
Assert.isTrue(affectedRow == 1, "子订单修改失败orderDetail=" + orderDetail);
return AjaxResult.success("发起成功");
}
} }

View File

@ -8,6 +8,7 @@ import com.ghy.common.core.page.PageDomain;
import com.ghy.common.core.page.TableDataInfo; import com.ghy.common.core.page.TableDataInfo;
import com.ghy.common.core.page.TableSupport; import com.ghy.common.core.page.TableSupport;
import com.ghy.common.enums.BusinessType; import com.ghy.common.enums.BusinessType;
import com.ghy.common.enums.ImgType;
import com.ghy.common.utils.ExceptionUtil; import com.ghy.common.utils.ExceptionUtil;
import com.ghy.common.utils.StringUtils; import com.ghy.common.utils.StringUtils;
import com.ghy.common.utils.poi.ExcelUtil; import com.ghy.common.utils.poi.ExcelUtil;
@ -16,7 +17,9 @@ import com.ghy.customer.domain.CustomerAddress;
import com.ghy.customer.service.CustomerAddressService; import com.ghy.customer.service.CustomerAddressService;
import com.ghy.customer.service.CustomerService; import com.ghy.customer.service.CustomerService;
import com.ghy.goods.domain.Goods; import com.ghy.goods.domain.Goods;
import com.ghy.goods.domain.GoodsImgs;
import com.ghy.goods.domain.GoodsStandard; import com.ghy.goods.domain.GoodsStandard;
import com.ghy.goods.service.GoodsImgsService;
import com.ghy.goods.service.GoodsService; import com.ghy.goods.service.GoodsService;
import com.ghy.goods.service.GoodsStandardService; import com.ghy.goods.service.GoodsStandardService;
import com.ghy.order.domain.OrderDetail; import com.ghy.order.domain.OrderDetail;
@ -46,6 +49,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 主订单API * 主订单API
@ -75,6 +79,8 @@ public class OrderMasterController extends BaseController {
@Autowired @Autowired
private GoodsService goodsService; private GoodsService goodsService;
@Autowired @Autowired
private GoodsImgsService goodsImgsService;
@Autowired
private FinancialMasterService financialMasterService; private FinancialMasterService financialMasterService;
@Autowired @Autowired
private GoodsStandardService goodsStandardService; private GoodsStandardService goodsStandardService;
@ -192,6 +198,17 @@ public class OrderMasterController extends BaseController {
standardList.add(orderStandard); standardList.add(orderStandard);
} }
// 完工图片
List<String> finishImgList = null;
if (orderMaster.getOrderStatus() > 3) {
GoodsImgs qryImgsObj = new GoodsImgs();
qryImgsObj.setRemark(orderDetail.getId().toString());
qryImgsObj.setImgType(ImgType.FINISH_IMG.getId());
qryImgsObj.setGoodsId(0l);
List<GoodsImgs> goodsImgs = goodsImgsService.qryGoodsImgs(qryImgsObj);
finishImgList = goodsImgs.stream().map(GoodsImgs::getImgUrl).collect(Collectors.toList());
}
OrderStandardDetail orderStandardDetail = new OrderStandardDetail(); OrderStandardDetail orderStandardDetail = new OrderStandardDetail();
orderStandardDetail.setOrderDetailId(orderDetail.getId()); orderStandardDetail.setOrderDetailId(orderDetail.getId());
orderStandardDetail.setOrderDetailCode(orderDetail.getCode()); orderStandardDetail.setOrderDetailCode(orderDetail.getCode());
@ -203,6 +220,8 @@ public class OrderMasterController extends BaseController {
orderStandardDetail.setExpectTimeStart(orderDetail.getExpectTimeStart()); orderStandardDetail.setExpectTimeStart(orderDetail.getExpectTimeStart());
orderStandardDetail.setExpectTimeEnd(orderDetail.getExpectTimeEnd()); orderStandardDetail.setExpectTimeEnd(orderDetail.getExpectTimeEnd());
orderStandardDetail.setOrderStandardList(standardList); orderStandardDetail.setOrderStandardList(standardList);
orderStandardDetail.setFinishImgList(finishImgList);
orderStandardDetail.setRemark(orderDetail.getRemark());
orderStandardDetails.add(orderStandardDetail); orderStandardDetails.add(orderStandardDetail);
}); });

View File

@ -27,6 +27,8 @@ public class OrderListResponse {
private String customerRemark; private String customerRemark;
private String workerRemark;
private Date serverTime; private Date serverTime;
private Date expectTimeStart; private Date expectTimeStart;
@ -39,6 +41,8 @@ public class OrderListResponse {
private String goodsName; private String goodsName;
private Integer orderType;
private Integer orderStatus; private Integer orderStatus;
private Integer payStatus; private Integer payStatus;
@ -63,4 +67,6 @@ public class OrderListResponse {
private List<OrderStandardDetail> orderStandardDetailList; private List<OrderStandardDetail> orderStandardDetailList;
private List<String> finishImgList;
} }

View File

@ -26,6 +26,10 @@ public class OrderStandardDetail {
private Date workFinishTime; private Date workFinishTime;
private String remark;
private List<OrderStandard> orderStandardList; private List<OrderStandard> orderStandardList;
private List<String> finishImgList;
} }

View File

@ -129,4 +129,4 @@ jim:
# 百度地图应用api # 百度地图应用api
baidu: baidu:
ak: 'ZQTgMW7W0GTuE7Ripb0HDp5TqRaOI6PZ' ak: 'ZQTgMW7W0GTuE7Ripb0HDp5TqRaOI6PZ'
url: 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=#AK#&output=json&coordtype=wgs84ll&location=' url: 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=#AK#&output=json&coordtype=wgs84ll&location='

View File

@ -0,0 +1,29 @@
package com.ghy.common.enums;
/**
* 图片类型
*
* @author ydq
* @date : 2022-07-27 22:14
*/
public enum ImgType {
SWIPER_IMG(0, "轮播图"),
DESC_IMG(1, "详情图"),
FINISH_IMG(2, "完单图");
private Integer id;
private String name;
ImgType(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
}

View File

@ -12,6 +12,14 @@ import java.util.List;
*/ */
public interface GoodsImgsMapper { public interface GoodsImgsMapper {
/**
* 查询符合条件的图片信息
*
* @param goodsImgs 条件
* @return 图片信息列表
*/
List<GoodsImgs> qryGoodsImgs(GoodsImgs goodsImgs);
/** /**
* 批量插入商品图片 * 批量插入商品图片
* *

View File

@ -11,6 +11,14 @@ import java.util.List;
*/ */
public interface GoodsImgsService { public interface GoodsImgsService {
/**
* 查询符合条件的图片信息
*
* @param goodsImgs 条件
* @return 图片信息列表
*/
List<GoodsImgs> qryGoodsImgs(GoodsImgs goodsImgs);
/** /**
* 批量插入商品图片信息 * 批量插入商品图片信息
* *

View File

@ -22,6 +22,11 @@ public class GoodsImgsServiceImpl implements GoodsImgsService {
@Resource @Resource
GoodsImgsMapper goodsImgsMapper; GoodsImgsMapper goodsImgsMapper;
@Override
public List<GoodsImgs> qryGoodsImgs(GoodsImgs goodsImgs) {
return goodsImgsMapper.qryGoodsImgs(goodsImgs);
}
@Override @Override
public int batchInsert(List<GoodsImgs> goodsImgs) { public int batchInsert(List<GoodsImgs> goodsImgs) {
return goodsImgsMapper.batchInsert(goodsImgs); return goodsImgsMapper.batchInsert(goodsImgs);

View File

@ -14,6 +14,21 @@
FROM goods_imgs FROM goods_imgs
</sql> </sql>
<select id="qryGoodsImgs" parameterType="com.ghy.goods.domain.GoodsImgs" resultMap="GoodsImgsResult">
<include refid="selectGoodsImgs"/>
<where>
<if test="goodsId != null">
AND goods_id = #{goodsId}
</if>
<if test="remark != null and imgType != ''">
AND remark = #{remark}
</if>
<if test="imgType != null">
AND img_type = #{imgType}
</if>
</where>
</select>
<delete id="delete"> <delete id="delete">
DELETE FROM goods_imgs WHERE goods_imgs_id IN DELETE FROM goods_imgs WHERE goods_imgs_id IN
<foreach collection="array" item="goodsImgsId" open="(" separator="," close=")"> <foreach collection="array" item="goodsImgsId" open="(" separator="," close=")">
@ -73,4 +88,4 @@
</foreach> </foreach>
</update> </update>
</mapper> </mapper>

View File

@ -0,0 +1,21 @@
package com.ghy.order.request;
import lombok.Data;
import java.util.List;
/**
* 订单流转过程请求参数接收对象
*
* @author ydq
* @date : 2022-07-27 21:55
*/
@Data
public class OrderProcessRequest {
// 子订单id
private Long orderDetailId;
// 服务完成成果图
private List<String> finishImgList;
// 备注
private String remark;
}

View File

@ -149,6 +149,7 @@
<if test="expectTimeEnd != null">expect_time_end = #{expectTimeEnd},</if> <if test="expectTimeEnd != null">expect_time_end = #{expectTimeEnd},</if>
<if test="workBeginTime != null">work_begin_time = #{workBeginTime},</if> <if test="workBeginTime != null">work_begin_time = #{workBeginTime},</if>
<if test="workFinishTime != null">work_finish_time = #{workFinishTime},</if> <if test="workFinishTime != null">work_finish_time = #{workFinishTime},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
update_time = SYSDATE() update_time = SYSDATE()
</set> </set>