server/services/src/main/java/com/doumee/dao/business/model/Category.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.annotation.TableField; import com.doumee.core.annotation.excel.ExcelColumn; import com.doumee.core.model.LoginUserInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.baomidou.mybatisplus.annotation.IdType; @@ -63,7 +64,7 @@ @ApiModelProperty(value = "类型:0=品种配置;1=车辆类型配置;2=餐标配置;3=手续费配置;", example = "1") @ExcelColumn(name="类型:0=品种配置;1=车辆类型配置;2=餐标配置;3=手续费配置;") private Byte type; private Integer type; @ApiModelProperty(value = "内容(车辆规格、餐标、手续费比例)") @ExcelColumn(name="内容(车辆规格、餐标、手续费比例)") @@ -85,5 +86,10 @@ @ApiModelProperty(value = "餐标等配置项集合", example = "1") @TableField(exist = false) private JSONArray detailList; @ApiModelProperty(value = "图标全路径") @TableField(exist = false) private String iconFull; @ApiModelProperty(hidden = true) private LoginUserInfo loginUserInfo; } server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -26,232 +26,187 @@ public class Orders { @ApiModelProperty(value = "主键", example = "1") @ExcelColumn(name="主键") private Integer id; @ApiModelProperty(value = "是否已删除 0未删除 1已删除", example = "1") @ExcelColumn(name="是否已删除 0未删除 1已删除") private Integer deleted; @ApiModelProperty(value = "创建人编码", example = "1") @ExcelColumn(name="创建人编码") private Integer createUser; @ApiModelProperty(value = "创建时间") @ExcelColumn(name="创建时间") @ExcelColumn(name = "发布时间",index = 8,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss") private Date createTime; @ApiModelProperty(value = "更新人编码", example = "1") @ExcelColumn(name="更新人编码") private Integer updateUser; @ApiModelProperty(value = "更新时间") @ExcelColumn(name="更新时间") private Date updateTime; @ApiModelProperty(value = "备注") @ExcelColumn(name="备注") private String remark; @ApiModelProperty(value = "发单方", example = "1") @ExcelColumn(name="发单方") private Integer releaseMemberId; @ApiModelProperty(value = "类型:0=用工;1=运货;2=订餐", example = "1") @ExcelColumn(name="类型:0=用工;1=运货;2=订餐") @ExcelColumn(name = "订单类型",valueMapping = "0=用工单;1=货运单;2=订餐单;",index = 2,width = 10) private Integer type; @ApiModelProperty(value = "开始时间 yyyy-MM-dd") @ExcelColumn(name="开始时间 yyyy-MM-dd") private Date startDate; @ApiModelProperty(value = "结束时间 yyyy-MM-dd") @ExcelColumn(name="结束时间 yyyy-MM-dd") private Date endDate; @ApiModelProperty(value = "地点信息/用车起点/用餐地点") @ExcelColumn(name="地点信息/用车起点/用餐地点") private String location; @ApiModelProperty(value = "地点描述") @ExcelColumn(name="地点描述") private String locationRemark; @ApiModelProperty(value = "经度", example = "1") @ExcelColumn(name="经度") private BigDecimal lat; @ApiModelProperty(value = "省份") @ExcelColumn(name="省份") private String province; @ApiModelProperty(value = "城市") @ExcelColumn(name="城市") private String city; @ApiModelProperty(value = "区县") @ExcelColumn(name="区县") private String area; @ApiModelProperty(value = "纬度", example = "1") @ExcelColumn(name="纬度") private BigDecimal lgt; @ApiModelProperty(value = "需求类型(运货/用工):关联 category", example = "1") @ExcelColumn(name="需求类型(运货/用工):关联 category") private Integer categoryId; @ApiModelProperty(value = "用工类型:0=采摘工;1=分拣工;2=包装工;(用工订单)", example = "1") @ExcelColumn(name="用工类型:0=采摘工;1=分拣工;2=包装工;(用工订单)") private Integer workType; @ApiModelProperty(value = "计价数量1(天数/用车次数/小时/斤数)", example = "1") @ExcelColumn(name="计价数量1(天数/用车次数/小时/斤数)") private Integer priceNum1; @ApiModelProperty(value = "计价数量2(人数/用餐份数)", example = "1") @ExcelColumn(name="计价数量2(人数/用餐份数)") private Integer priceNum2; @ApiModelProperty(value = "需求补充") @ExcelColumn(name="需求补充") private String supplement; @ApiModelProperty(value = "费用标准", example = "1") @ExcelColumn(name="费用标准") private Long price; @ApiModelProperty(value = "预估费用", example = "1") @ExcelColumn(name="预估费用") private Long estimatedAccount; @ApiModelProperty(value = "实际支付费用", example = "1") @ExcelColumn(name="实际支付费用") private Long payAccount; @ApiModelProperty(value = "实收费用", example = "1") @ExcelColumn(name="实收费用") private Long receiveAccount; // @ApiModelProperty(value = "费用说明(弃用)") // private String priceRemark; @ApiModelProperty(value = "用车类型(用工包装/运货使用):0=天;1=次/小时;2=重量", example = "1") @ExcelColumn(name="用车类型(用工包装/运货使用):0=天;1=次/小时;2=重量") private Integer carType; @ApiModelProperty(value = "运输品种(运货使用) 关联category表", example = "1") @ExcelColumn(name="运输品种(运货使用) 关联category表") private Integer transportTypeId; @ApiModelProperty(value = "运输重量/数量", example = "1") @ExcelColumn(name="运输重量/数量") private Integer transportNum; @ApiModelProperty(value = "运输单位(个/斤)") @ExcelColumn(name="运输单位(个/斤)") private String transportUnit; @ApiModelProperty(value = "用车终点地址") @ExcelColumn(name = "用车终点地址") private String locationEnd; @ApiModelProperty(value = "用车终点经度") @ExcelColumn(name="用车终点经度") private String latEnd; @ApiModelProperty(value = "用车终点纬度") @ExcelColumn(name="用车终点纬度") private String lgtEnd; @ApiModelProperty(value = "途经点/餐标信息") @ExcelColumn(name="途经点/餐标信息") private String wayInfo; @ApiModelProperty(value = "订单编号") @ExcelColumn(name="订单编号") @ExcelColumn(name = "订单编号",index = 1,width = 10) private String code; @ApiModelProperty(value = "订单状态:0=待支付 1=待接单;2=已接单;3=进行中;4=已完成;99=已取消;", example = "1") @ExcelColumn(name="订单状态:0=待支付 1=待接单;2=已接单;3=进行中;4=已完成;99=已取消;") @ExcelColumn(name = "订单状态",index = 11,width = 10,valueMapping = "0=待支付;1=待接单;2=已接单;3=进行中;4=已完成;99=已取消;") private Integer status; @ApiModelProperty(value = "支付状态:0=待支付 1=已支付", example = "1") @ExcelColumn(name="支付状态:0=待支付 1=已支付;") private Integer payStatus; @ApiModelProperty(value = "接单时间") @ExcelColumn(name="接单时间") @ExcelColumn(name = "接单时间",index = 9,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss") private Date acceptTime; @ApiModelProperty(value = "接单人", example = "1") @ExcelColumn(name="接单人") private Integer acceptMemberId; @ApiModelProperty(value = "接单类型:0=手动接单;1=系统派单;", example = "1") @ExcelColumn(name="接单类型:0=手动接单;1=系统派单;") private Integer acceptType; @ApiModelProperty(value = "开始作业时间") @ExcelColumn(name="开始作业时间") private Date workStartTime; @ApiModelProperty(value = "完成时间") @ExcelColumn(name="完成时间") @ExcelColumn(name = "完成时间",index = 10,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss") private Date finishTime; @ApiModelProperty(value = "平台提成比例", example = "1") @ExcelColumn(name="平台提成比例") private BigDecimal platformRata; @ApiModelProperty(value = "微信平台交易订单号") @ExcelColumn(name="微信平台交易订单号") private String wxExternalNo; @ApiModelProperty(value = "是否评价:0=否;1=是", example = "1") @ExcelColumn(name="是否评价:0=否;1=是") private Integer commentStatus; @ApiModelProperty(value = "评价内容") @ExcelColumn(name="评价内容") private String commentInfo; @ApiModelProperty(value = "评价星级1-5", example = "1") @ExcelColumn(name="评价星级1-5") private Integer commentLevel; @ApiModelProperty(value = "评价时间") @ExcelColumn(name="评价时间") private Date commentTime; @ApiModelProperty(value = "评价类型:0=手动评价;1=系统自动评价;", example = "1") @ExcelColumn(name="评价类型:0=手动评价;1=系统自动评价;") private Integer commentType; @ApiModelProperty(value = "取消时间") @ExcelColumn(name="取消时间") private Date cancelTime; @ApiModelProperty(value = "是否已修改:0=否;1=是;2=已确认;", example = "1") @ExcelColumn(name="是否已修改:0=否;1=是;2=已确认;") private Integer isUpdate; @ApiModelProperty(value = "接单方黑名单member:id 多个以,分割") @ExcelColumn(name="接单方黑名单member:id 多个以,分割") private String blackReceive; @ApiModelProperty(value = "总天数", example = "1") @ExcelColumn(name="总天数") private Integer totalDays; @ApiModelProperty(value = "取消类型:0=发单方无责取消;1=发单方有责取消;2=系统取消;", example = "1") @ExcelColumn(name = "取消类型:0=发单方无责取消;1=发单方有责取消;2=系统取消;") private Integer cancelType; @ApiModelProperty(value = "图片") @TableField(exist = false) private List<Multifile> multifileList; @ApiModelProperty(value = "日志列表") @TableField(exist = false) private List<OrderLog> orderLogList; @ApiModelProperty(value = "途经点") @TableField(exist = false) @@ -284,22 +239,27 @@ @ApiModelProperty(value = "接单方名称") @TableField(exist = false) @ExcelColumn(name = "接单方名称",index = 6,width = 10) private String acceptName; @ApiModelProperty(value = "接单方联系方式") @ApiModelProperty(value = "接单方手机号") @TableField(exist = false) @ExcelColumn(name = "接单方联系方式",index = 7,width = 10) private String acceptPhone; @ApiModelProperty(value = "发单方名称") @TableField(exist = false) @ExcelColumn(name = "发单方名称",index = 4,width = 10) private String releaseName; @ApiModelProperty(value = "发单方手机号") @TableField(exist = false) @ExcelColumn(name = "发单方手机号",index = 5,width = 10) private String releasePhone; @ApiModelProperty(value = "订单内容") @TableField(exist = false) @ExcelColumn(name = "订单内容",index = 3,width = 20) private String orderContent; server/services/src/main/java/com/doumee/dao/dto/AuditDTO.java
@@ -22,4 +22,5 @@ @ApiModelProperty(value = "审批描述") private String auditRemark; } server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -1,7 +1,12 @@ package com.doumee.service.business.impl; import com.alibaba.fastjson.JSONArray; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.Constants; import com.doumee.core.constants.Constants; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; @@ -21,7 +26,9 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.Objects; /** * 分类信息表Service实现 @@ -34,15 +41,38 @@ @Autowired private CategoryMapper categoryMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public Integer create(Category category) { if(Objects.isNull(category) || Objects.isNull(category.getType()) || Objects.isNull(category.getName()) || (!Constants.equalsInteger(category.getType(),Constants.ZERO)&& CollectionUtils.isEmpty(category.getDetailList())) || (Constants.equalsInteger(category.getType(),Constants.ONE) && (Objects.isNull(category.getIcon())||Objects.isNull(category.getIsFixed())) ) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo loginUserInfo = category.getLoginUserInfo(); category.setCreateTime(new Date()); category.setDeleted(Constants.ZERO); category.setCreateUser(loginUserInfo.getId()); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(category.getDetailList())){ category.setDetail(category.getDetailList().toJSONString()); } if(!Constants.equalsInteger(category.getType(),Constants.ONE)){ category.setIsFixed(Constants.ZERO); } categoryMapper.insert(category); return category.getId(); } @Override public void deleteById(Integer id) { categoryMapper.deleteById(id); categoryMapper.update(new UpdateWrapper<Category>().lambda().set(Category::getDeleted,Constants.ONE).eq(Category::getId,id)); // categoryMapper.deleteById(id); } @Override @@ -61,6 +91,22 @@ @Override public void updateById(Category category) { if(Objects.isNull(category) || Objects.isNull(category.getId()) || Objects.isNull(category.getType()) || Objects.isNull(category.getName()) || (!Constants.equalsInteger(category.getType(),Constants.ZERO)&& CollectionUtils.isEmpty(category.getDetailList())) || (Constants.equalsInteger(category.getType(),Constants.ONE) && (Objects.isNull(category.getIcon())||Objects.isNull(category.getIsFixed())) ) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo loginUserInfo = category.getLoginUserInfo(); category.setUpdateTime(new Date()); category.setIsFixed(null); category.setUpdateUser(loginUserInfo.getId()); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(category.getDetailList())){ category.setDetail(category.getDetailList().toJSONString()); } categoryMapper.updateById(category); } @@ -76,7 +122,19 @@ @Override public Category findById(Integer id) { return categoryMapper.selectById(id); Category category = categoryMapper.selectById(id); if(Objects.isNull(category)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(StringUtils.isNotBlank(category.getDetail())){ category.setDetailList(JSONArray.parseArray(category.getDetail())); } if(StringUtils.isNotBlank(category.getIcon())){ String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode(); category.setIconFull(path + category.getIcon()); } return category; } @Override @@ -144,11 +202,16 @@ queryWrapper.orderByAsc(Category::getSortnum); PageData<Category> result =PageData.from(categoryMapper.selectJoinPage(page, Category.class,queryWrapper)); if(result!=null && result.getRecords()!=null){ String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode(); for(Category cate : result.getRecords()){ try { if(StringUtils.isNotBlank(cate.getDetail())){ cate.setDetailList(JSONArray.parseArray(cate.getDetail())); } if(StringUtils.isNotBlank(cate.getIcon())){ cate.setIconFull(path + cate.getIcon()); } }catch (Exception e){ } server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -357,12 +357,53 @@ @Override public Orders findById(Integer id) { return ordersMapper.selectById(id); Orders orders = ordersMapper.selectJoinOne(Orders.class,new MPJLambdaWrapper<Orders>() .selectAll(Orders.class) .select(" m1.name " , Orders::getReleaseName) .select(" m1.telephone " , Orders::getReleasePhone) .select(" case when i.AUTH_TYPE = 0 then i.LINK_NAME else i.COMPANY_NAME end " , Orders::getAcceptName) .select(" i.TELEPHONE " , Orders::getAcceptPhone) .select("c1.name",Orders::getCategoryName) .select("c2.name",Orders::getTransportTypeName) .leftJoin(" category c1 on t.category_id = c1.id ") .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id ") .leftJoin("member m1 on t.RELEASE_MEMBER_ID = m1.id ") .leftJoin("member m2 on t.ACCEPT_MEMBER_ID = m2.id ") .leftJoin("identity_info i on m2.id = i.MEMBER_ID and i.TYPE = t.type and i.AUDIT_STATUS = 2 ") .eq(Orders::getDeleted,Constants.ZERO) .eq(Orders::getId,id) .orderByDesc(Orders::getId)); if(Objects.isNull(orders)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } //附件信息 List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,orders.getId()) .eq(Multifile::getIsdeleted,Constants.ZERO).eq(Multifile::getObjType,Constants.ONE).orderByAsc(Multifile::getId)); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ORDERS_FILES).getCode(); for (Multifile multifile:multifileList) { multifile.setFileurlFull(path + multifile.getFileurl()); } orders.setMultifileList(multifileList); } //订单流转记录 List<OrderLog> orderLogList = orderLogMapper.selectList(new QueryWrapper<OrderLog>().lambda() .eq(OrderLog::getDeleted,Constants.ZERO) .eq(OrderLog::getOrderId,orders.getId()) .orderByAsc(OrderLog::getCreateTime) ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(orderLogList)){ for (OrderLog orderLog:orderLogList) { if(Constants.equalsInteger(orderLog.getOptUserType(),Constants.ZERO)){ orderLog.setLogInfo(orderLog.getLogInfo().replace("{userName}",orders.getReleaseName())); }else if(Constants.equalsInteger(orderLog.getOptUserType(),Constants.ONE)){ orderLog.setLogInfo(orderLog.getLogInfo().replace("{userName}",orders.getAcceptName())); } } orders.setOrderLogList(orderLogList); } return orders; } @Override @@ -380,7 +421,7 @@ @Override public PageData<Orders> findPage(PageWrap<Orders> pageWrap) { IPage<Orders> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper<Orders> queryWrapper = new MPJLambdaWrapper<>(); MPJLambdaWrapper<Orders> queryWrapper = new MPJLambdaWrapper<Orders>(); Utils.MP.blankToNull(pageWrap.getModel()); Orders model = pageWrap.getModel(); queryWrapper.selectAll(Orders.class) @@ -412,32 +453,50 @@ queryWrapper.apply(org.apache.commons.lang3.StringUtils.isNotBlank(model.getAcceptName())," i.LINK_NAME like '%"+model.getAcceptName()+"%' or i.company_name like '%"+model.getAcceptName()+"%' "); IPage<Orders> iPage = ordersMapper.selectJoinPage(page,Orders.class,queryWrapper); for (Orders orders:iPage.getRecords()) { this.getOrderContent(orders); } return PageData.from(iPage); } public void getOrderContent(Orders orders){ if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){ orders.setOrderContent(Constants.workType.getName(orders.getWorkType()) +" | " + orders.getCategoryName()); if(Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)){ orders.setOrderContent(orders.getOrderContent()+" | " +orders.getPriceNum1()+"斤"); }else if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)){ orders.setOrderContent(orders.getOrderContent()+" | " +orders.getPriceNum1()+"人"); orders.setOrderContent(orders.getOrderContent()+" | " +orders.getPriceNum2()+"人"); }else{ if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)||Constants.equalsInteger(orders.getCarType(),Constants.ONE)){ orders.setOrderContent(orders.getOrderContent()+" | " +orders.getPriceNum2()+"人"); }else{ orders.setOrderContent(orders.getOrderContent()+" | " +orders.getPriceNum1()+"斤"); } } }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){ orders.setOrderContent( orders.getCategoryName() + " | " + orders.getTransportTypeName() +" | " + orders.getTransportNum() +"斤"); if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){ orders.setOrderContent(orders.getOrderContent()+" | 用车" +orders.getPriceNum2()+"天"); }else{ orders.setOrderContent(orders.getOrderContent()+" | 用车" +orders.getPriceNum2()+"次"); } }else{ if(org.apache.commons.lang3.StringUtils.isNotBlank(orders.getWayInfo())){ List<CateringDTO> cateringDTOList = JSONArray.parseArray(orders.getWayInfo(),CateringDTO.class); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(cateringDTOList)){ for (CateringDTO cateringDTO:cateringDTOList) { if(StringUtils.isEmpty(orders.getOrderContent())){ orders.setOrderContent(cateringDTO.getName()+cateringDTO.getPrice()+" 需"+cateringDTO.getNum()+"份"); }else{ orders.setOrderContent(orders.getOrderContent()+" | "+cateringDTO.getName()+cateringDTO.getPrice()+" 需"+cateringDTO.getNum()+"份"); } } } } } } } return PageData.from(iPage); } @Override public long count(Orders orders) {