【功能优化】初步完善订单打印功能

pull/1/head
zengchenxi 9 months ago
parent 87aad982d6
commit 552398aa51

@ -176,4 +176,7 @@ public class ProjectOrderRespVO {
@Schema(description = "变更的字段列表") @Schema(description = "变更的字段列表")
private Set<String> alterFieldNames; private Set<String> alterFieldNames;
@Schema(description = "创建人名称")
private String creatorName;
} }

@ -196,6 +196,21 @@ public class ProjectOrderDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private String businessManName; private String businessManName;
@TableField(exist = false)
private String creatorName;
@TableField(exist = false)
private String auditName;
@TableField(exist = false)
private Long auditTime;
@TableField(exist = false)
private String approveName;
@TableField(exist = false)
private Long approveTime;
/** /**
* *
* */ * */

@ -72,4 +72,9 @@ public class ProjectOrderSubDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private Set<String> alterFieldNames; private Set<String> alterFieldNames;
/**
*
*/
@TableField(exist = false)
private String compositionName;
} }

@ -3,6 +3,7 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO;
@ -42,4 +43,17 @@ public interface ProjectOrderMapper extends BaseMapperX<ProjectOrderDO> {
return selectPage(reqVO, query); return selectPage(reqVO, query);
} }
default ProjectOrderDO selectById(Long id) {
MPJLambdaWrapper<ProjectOrderDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProjectOrderDO.class)
.select("u.nickname as businessManName", "d.name as businessDeptName", "u1.nickname as creatorName")
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, ProjectOrderDO::getBusinessMan)
.leftJoin(AdminUserDO.class, "u1", AdminUserDO::getId, ProjectOrderDO::getCreator)
.leftJoin(DeptDO.class, "d", DeptDO::getId, ProjectOrderDO::getBusinessDeptId)
.eq(ProjectOrderDO::getId, id)
.last("LIMIT 1")
.disableSubLogicDel();
return selectOne(query);
}
} }

@ -6,7 +6,9 @@ import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectordersub.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectordersub.ProjectOrderSubDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -18,7 +20,13 @@ import org.apache.ibatis.annotations.Mapper;
public interface ProjectOrderSubMapper extends BaseMapperX<ProjectOrderSubDO> { public interface ProjectOrderSubMapper extends BaseMapperX<ProjectOrderSubDO> {
default List<ProjectOrderSubDO> selectListByProjectOrderId(Long projectOrderId) { default List<ProjectOrderSubDO> selectListByProjectOrderId(Long projectOrderId) {
return selectList(ProjectOrderSubDO::getProjectOrderId, projectOrderId); MPJLambdaWrapper<ProjectOrderSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProjectOrderSubDO.class)
.select("b.name as compositionName")
.leftJoin(CompositionDO.class, "b", CompositionDO::getId, ProjectOrderSubDO::getCompositionId)
.disableSubLogicDel()
.eq(ProjectOrderSubDO::getProjectOrderId, projectOrderId);
return selectList(query);
} }
default int deleteByProjectOrderId(Long projectOrderId) { default int deleteByProjectOrderId(Long projectOrderId) {

@ -219,6 +219,8 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
// do nothing // do nothing
log.error("generate alterFieldNames error, id: {}, exception: {}", id, e.getMessage(), e); log.error("generate alterFieldNames error, id: {}, exception: {}", id, e.getMessage(), e);
} }
// 查询操作日志获取审核/批准
return projectOrderDO; return projectOrderDO;
} }

@ -6,6 +6,7 @@ import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -28,6 +29,9 @@ public class OperateLogPageReqVO extends PageParam {
@Schema(description = "操作分类,参见 OperateLogTypeEnum 枚举类", example = "1") @Schema(description = "操作分类,参见 OperateLogTypeEnum 枚举类", example = "1")
private Integer type; private Integer type;
@Schema(description = "操作分类列表", example = "1")
private List<Integer> typeList;
@Schema(description = "操作状态", example = "true") @Schema(description = "操作状态", example = "true")
private Boolean success; private Boolean success;

@ -20,7 +20,9 @@ public interface OperateLogMapper extends BaseMapperX<OperateLogDO> {
.likeIfPresent(OperateLogDO::getModule, reqVO.getModule()) .likeIfPresent(OperateLogDO::getModule, reqVO.getModule())
.inIfPresent(OperateLogDO::getUserId, userIds) .inIfPresent(OperateLogDO::getUserId, userIds)
.eqIfPresent(OperateLogDO::getType, reqVO.getType()) .eqIfPresent(OperateLogDO::getType, reqVO.getType())
.betweenIfPresent(OperateLogDO::getStartTime, reqVO.getStartTime()); .betweenIfPresent(OperateLogDO::getStartTime, reqVO.getStartTime())
.inIfPresent(OperateLogDO::getType, reqVO.getTypeList())
;
if (Boolean.TRUE.equals(reqVO.getSuccess())) { if (Boolean.TRUE.equals(reqVO.getSuccess())) {
query.eq(OperateLogDO::getResultCode, GlobalErrorCodeConstants.SUCCESS.getCode()); query.eq(OperateLogDO::getResultCode, GlobalErrorCodeConstants.SUCCESS.getCode());
} else if (Boolean.FALSE.equals(reqVO.getSuccess())) { } else if (Boolean.FALSE.equals(reqVO.getSuccess())) {

@ -278,6 +278,7 @@ import { dateFormatter, dateFormatter2, formatDate } from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import * as ProjectOrderApi from '@/api/heli/projectorder' import * as ProjectOrderApi from '@/api/heli/projectorder'
import Print from './startprint.vue' // import Print from './startprint.vue' //
import {ref} from "vue";
defineOptions({ name: 'ProjectOrder' }) defineOptions({ name: 'ProjectOrder' })
@ -397,7 +398,6 @@ const handleCommand = async (command, id, code) => {
break break
case 'printProject': case 'printProject':
printHandle(id) printHandle(id)
// TODO
break break
case 'alter': case 'alter':
openDetail('alter', id) openDetail('alter', id)
@ -416,6 +416,14 @@ const handleCommand = async (command, id, code) => {
} }
} }
//
const printRef = ref() //
const dialogInfo = ref({}) //
//
const printHandle = (id) => {
printRef.value.open(id)
}
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(() => {
getList() getList()
@ -424,12 +432,6 @@ onActivated(() => {
getList() getList()
}) })
const printRef = ref() //
const dialogVisible = ref(false) //
//
const printHandle = (id) => {
printRef.value.open(id)
}
</script> </script>
<style scoped> <style scoped>

@ -20,15 +20,15 @@
</tr> </tr>
</tbody> </tbody>
<tbody> <tbody>
<tr> <tr>
<td colspan="2"> 客户名称 </td> <td colspan="2"> 客户名称 </td>
<td colspan="5"> <td colspan="5">
<span>{{ formData.customerId }}</span> <span>{{ formData.customer.name }}</span>
</td> </td>
<td colspan="1">{{ `密称` }}</td> <td colspan="1">{{ formData.customer.brief }}</td>
<td> 编码 </td> <td> 编码 </td>
<td>{{ `1091` }} </td> <td>{{ formData.customer.code }} </td>
</tr> </tr>
</tbody> </tbody>
<tr> <tr>
<td colspan="2"> 项目名称 </td> <td colspan="2"> 项目名称 </td>
@ -36,29 +36,20 @@
{{ formData.mouldName }} {{ formData.mouldName }}
</td> </td>
<td> 业务员 </td> <td> 业务员 </td>
<td>{{ formData.businessMan }} </td> <td>{{ formData.businessManName }} </td>
</tr> </tr>
<tr> <tr>
<td colspan="2"> 项目工期 </td> <td colspan="2"> 项目工期 </td>
<td colspan="1"> </td> <td colspan="1"> </td>
<td colspan="1"> <td colspan="1">
<span> {{ formData.projectStartTime }}</span> <span>{{ formatDate(new Date(formData.projectStartTime), 'YYYY-MM-DD') }}</span>
</td> </td>
<td colspan="1"></td> <td colspan="1"></td>
<td colspan="1">{{ formData.projectEndTime }}</td> <td colspan="1">{{ formatDate(new Date(formData.projectEndTime), 'YYYY-MM-DD') }}</td>
<td>天数</td> <td>天数</td>
<td colspan="1">{{ <td colspan="1">{{ betweenDay(new Date(formData.projectStartTime), new Date(formData.projectEndTime)) }}</td>
betweenDay(new Date(formData.projectStartTime), new Date(formData.projectEndTime))
}}</td>
<td colspan="1"> 是否紧急 </td> <td colspan="1"> 是否紧急 </td>
<td colspan="1">{{ getDictLabel(DICT_TYPE.HELI_COMMON_IS_OR_NOT, formData.isUrgency) }} </td>
<td colspan="1">
<dict-tag
:type="DICT_TYPE.HELI_COMMON_IS_OR_NOT"
:value="formData.isUrgency"
style="border: none; background-color: #fff; color: #666"
/>
</td>
</tr> </tr>
<tr> <tr>
<td colspan="10"> <td colspan="10">
@ -100,20 +91,8 @@
<div>性质</div> <div>性质</div>
</div> </div>
<div style="border: 1px solid #333; width: 100px"> <div style="border: 1px solid #333; width: 100px">
<div style="border-bottom: 1px solid #333"> <div style="border-bottom: 1px solid #333">{{ getDictLabel(DICT_TYPE.HELI_BUSINESS_LINE, formData.businessLine) }}</div>
<dict-tag <div>{{ getDictLabel(DICT_TYPE.HELI_PROJECT_PROPERTY, formData.property) }}</div>
:type="DICT_TYPE.HELI_BUSINESS_LINE"
:value="formData.businessLine"
style="border:none; background-color: #fff; color: #333; padding: 2px 0"
/>
</div>
<div>
<dict-tag
:type="DICT_TYPE.HELI_PROJECT_PROPERTY"
:value="formData.property"
style="border:none; background-color: #fff; color: #333; padding: 2px 0"
/>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -134,13 +113,13 @@
<td> 主要材料 </td> <td> 主要材料 </td>
<td colspan="3"> 子项目编号 </td> <td colspan="3"> 子项目编号 </td>
</tr> </tr>
<tr v-for="item in 8" :key="item.index"> <tr v-for="(item,idx) in formData.projectOrderSubs" :key="idx">
<td>{{ item }}</td> <td>{{ idx+1 }}</td>
<td colspan="2"></td> <td colspan="2">{{item.name}}</td>
<td></td> <td>{{item.deviceModel}}</td>
<td></td>
<td></td>
<td></td> <td></td>
<td>{{item.amount}}</td>
<td>{{item.compositionName}}</td>
<td colspan="3"></td> <td colspan="3"></td>
</tr> </tr>
</tbody> </tbody>
@ -165,14 +144,14 @@
<td colspan="4"> 批准/日期 </td> <td colspan="4"> 批准/日期 </td>
</tr> </tr>
<tr> <tr>
<td colspan="3">1</td> <td colspan="3">{{formData.creatorName}}</td>
<td colspan="3"> </td> <td colspan="3">{{formData.auditUserName}}</td>
<td colspan="4"> </td> <td colspan="4">{{formData.approveUserName}}</td>
</tr> </tr>
<tr> <tr>
<td colspan="3">1</td> <td colspan="3">{{formatDate(new Date(formData.createTime), 'YYYY-MM-DD')}}</td>
<td colspan="3"> </td> <td colspan="3">{{formatDate(new Date(formData.auditTime), 'YYYY-MM-DD')}}</td>
<td colspan="4"> </td> <td colspan="4">{{formatDate(new Date(formData.approveTime), 'YYYY-MM-DD')}}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -190,6 +169,7 @@ import * as ProjectOrderApi from '@/api/heli/projectorder'
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict' import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict'
import { betweenDay, dateFormatter, formatDate } from '@/utils/formatTime' import { betweenDay, dateFormatter, formatDate } from '@/utils/formatTime'
import { Check } from '@element-plus/icons-vue' import { Check } from '@element-plus/icons-vue'
import {getCustomer} from "@/api/heli/customer";
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const onPrint = () => { const onPrint = () => {
@ -324,17 +304,17 @@ const formData = ref({
snapshotCode: undefined, snapshotCode: undefined,
orderTime: new Date(), orderTime: new Date(),
snapshotOrderTime: undefined, snapshotOrderTime: undefined,
alterFieldNames: [] alterFieldNames: [],
customer: {}
}) })
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (id?: number) => { const open = async (id?: number) => {
console.log(id)
dialogVisible.value = true dialogVisible.value = true
resetForm() resetForm()
if (id) { formData.value = await ProjectOrderApi.getProjectOrder(id)
formData.value = await ProjectOrderApi.getProjectOrder(id) //
console.log(formData.value) formData.value.projectOrderSubs = await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(id)
} formData.value.customer = await getCustomer(formData.value.customerId)
} }
defineExpose({ open }) // open defineExpose({ open }) // open
@ -380,7 +360,8 @@ const resetForm = () => {
snapshotCode: undefined, snapshotCode: undefined,
orderTime: new Date(), orderTime: new Date(),
snapshotOrderTime: undefined, snapshotOrderTime: undefined,
alterFieldNames: [] alterFieldNames: [],
customer: {}
} }
} }
</script> </script>

Loading…
Cancel
Save