更新打印状态

This commit is contained in:
z 2025-07-24 17:35:36 +08:00
parent b607ef3026
commit 22837fdc12
25 changed files with 271 additions and 76 deletions

View File

@ -151,7 +151,7 @@ public class bdgzsomthingController {
BeanUtils.toBean(list, bdgzsomthingRespVO.class));
}
@Scheduled(fixedRate = 10800000)
// @Scheduled(fixedRate = 10800000)
public void scheduledTask() {
bdgzsomthingService.selectds();
}
@ -159,8 +159,8 @@ public class bdgzsomthingController {
//@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次
@PostConstruct
public void init() {
selectHasPrice();
selectSafeStorageAndDeliverOneYear();
// selectHasPrice();
// selectSafeStorageAndDeliverOneYear();
// bdgzsomthingService.selectds();
}
@Scheduled(cron = "0 0 2 * * ?")

View File

@ -118,6 +118,7 @@ public class PgMasterLinePageReqVO extends PageParam {
@Schema(description = "报工状态")
private String active;
@Schema(description = "项目或子项目id")
private String subOrDetailName;
}

View File

@ -158,5 +158,10 @@ public class PurchaseOrderNoController {
public CommonResult<Boolean> deleteForm(@RequestParam("id") Long id) {
return purchaseOrderNoService.deleteForm(id);
}
@GetMapping("/updateIsPrint")
@Operation(summary = "打印")
@PreAuthorize("@ss.hasPermission('heli:process-bom:create')")
public CommonResult<Boolean> updateIsPrint(@RequestParam("id") Long id) {
return purchaseOrderNoService.updateIsPrint(id);
}
}

View File

@ -113,4 +113,12 @@ public class StorageInController {
public CommonResult<Boolean> warehousing(@RequestParam("id") Long id) {
return storageInService.warehousing(id);
}
@GetMapping("/updateIsPrint")
@Operation(summary = "修改打印状态")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:storage-in:query')")
public CommonResult<Boolean> updateIsPrint(@RequestParam("id") Long id) {
return success(storageInService.updateIsPrint(id));
}
}

View File

@ -81,5 +81,6 @@ public class ZjPgMasterLinePageReqVO extends PageParam {
@Schema(description = "派工状态", example = "1-2-3")
private Integer dispatchStatus;
@Schema(description = "扫码查询")
private String subOrDetailName;
}

View File

@ -91,10 +91,16 @@ public interface PgMasterLineMapper extends BaseMapperX<PgMasterLineDO> {
}
query.eq(reqVO.getDetilUser() != null&&reqVO.getDetilUser() != 0, PgMasterLineDO::getDetilUser, reqVO.getDetilUser())
.eq(reqVO.getPgType() != null, PgMasterLineDO::getPgType, reqVO.getPgType())
.eq(reqVO.getDispatchStatus() != null, PgMasterLineDO::getDispatchStatus, reqVO.getDispatchStatus())
.eq(reqVO.getDispatchStatus() != null, PgMasterLineDO::getDispatchStatus, reqVO.getDispatchStatus());
if (reqVO.getSubOrDetailName() != null && !reqVO.getSubOrDetailName().trim().equals("")){
query.and( e ->e.like(PgMasterLineDO::getProjectName, reqVO.getSubOrDetailName()).or().like(
PgMasterLineDO::getProjectSubName, reqVO.getSubOrDetailName()
).or().like(PgMasterLineDO::getMaterialName, reqVO.getSubOrDetailName()));
// query.eq(" (b.project_name like '%" + reqVO.getSubOrDetailName() + "%' or c.name like '%" + reqVO.getSubOrDetailName() + "%')");
}
;
return selectPage(reqVO, query);
}

View File

@ -58,11 +58,11 @@ public interface TaskReportMapper extends BaseMapperX<TaskReportDO> {
.like(!StringUtils.isEmpty(reqVO.getMaterialName()), ProcessBomDetailDO::getMaterialName, reqVO.getMaterialName())
.like(!StringUtils.isEmpty(reqVO.getOwnerName()), AdminUserDO::getNickname, reqVO.getOwnerName())
.eq(!StringUtils.isEmpty(reqVO.getDispatchDetailId()),TaskReportDO::getDispatchDetailId,reqVO.getDispatchDetailId());
if (reqVO.getStartTime() != null) {
query.between( TaskReportDO::getStartTime, reqVO.getStartTime()[0], reqVO.getStartTime()[1]);
}
if (reqVO.getStartTime() != null) {
query.between(TaskReportDO::getEndTime, reqVO.getEndTime()[0], reqVO.getEndTime()[1]);
// if (reqVO.getStartTime() != null) {
// query.between( TaskReportDO::getStartTime, reqVO.getStartTime()[0], reqVO.getStartTime()[1]);
// }
if (reqVO.getEndTime() != null) {
query.between(TaskReportDO::getReportTime, reqVO.getEndTime()[0], reqVO.getEndTime()[1]);
}
return selectPage(reqVO, query);
}

View File

@ -118,7 +118,12 @@ public interface ZjPgMasterLineMapper extends BaseMapperX<ZjPgMasterLineDO> {
.eq(reqVO.getDispatchStatus()!=null,ZjPgMasterLineDO::getDispatchStatus, reqVO.getDispatchStatus())
;
if (reqVO.getSubOrDetailName() != null && !reqVO.getSubOrDetailName().trim().equals("")){
query.and( e ->e.like(ZjPgMasterLineDO::getProjectName, reqVO.getSubOrDetailName()).or().like(
ZjPgMasterLineDO::getProjectSubName, reqVO.getSubOrDetailName()
));
// query.eq(" (b.project_name like '%" + reqVO.getSubOrDetailName() + "%' or c.name like '%" + reqVO.getSubOrDetailName() + "%')");
}
return selectPage(reqVO, query);
}
default int deleteByZlPgId(Integer zlPgId) {

View File

@ -1120,6 +1120,8 @@ public class ProcessBomServiceImpl implements ProcessBomService {
boomDO.setBoomDetailId(processBomDetailDO.getId());
boomDO.setBoomAmount(new BigDecimal(processBomDetailDO.getAmounts()));
boomDO.setBoomArriveDate(processBomDetailDO.getBoomArriveDate());
boomDO.setArriveTime(processBomDetailDO.getBoomArriveDate());
boomDO.setPurchaseAmount(new BigDecimal(processBomDetailDO.getAmounts()));
boomDO.setMatName(processBomDetailDO.getMaterialName());
boomDO.setDuEmpId(processBomDetailDO.getDuEmpId());
boomDO.setProjectPlanSubId(processBomDetailDO.getProjectSubId());

View File

@ -63,4 +63,6 @@ public interface PurchaseOrderNoService {
CommonResult<Boolean> deleteForm(Long id);
void updatePORSById(Long id);
CommonResult<Boolean> updateIsPrint(Long id);
}

View File

@ -400,4 +400,13 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService {
purchaseOrderNoMapper.update(wrapper);
}
@Override
public CommonResult<Boolean> updateIsPrint(Long id) {
LambdaUpdateWrapper<PurchaseOrderNoDO> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(PurchaseOrderNoDO::getId,id);
wrapper.set(PurchaseOrderNoDO::getIsPrint,"Y");
purchaseOrderNoMapper.update(wrapper);
return CommonResult.success(true);
}
}

View File

@ -61,4 +61,6 @@ public interface StorageInService {
CommonResult<Boolean> standardPartsReceived(List<PurchaseOrderNoDetailDO> list);
CommonResult<Boolean> warehousing(Long id);
Boolean updateIsPrint(Long id);
}

View File

@ -466,4 +466,13 @@ public class StorageInServiceImpl implements StorageInService {
return CommonResult.success(true);
}
@Override
public Boolean updateIsPrint(Long id) {
LambdaUpdateWrapper<StorageInDO> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(StorageInDO::getId,id);
wrapper.set(StorageInDO::getIsPrint,"Y");
storageInMapper.update(wrapper);
return true;
}
}

View File

@ -77,3 +77,7 @@ export const isPrint = async (id: number) => {
export const countReview = async () => {
return await request.get({ url: `/heli/purchase-order-make/countReview` })
}
// 打印接口
export const updateIsPrint = async (id: number) => {
return await request.get({ url: `/heli/purchase-order-no/updateIsPrint?id=` + id })
}

View File

@ -56,3 +56,7 @@ export const standardPartsReceived = async (data: StorageInVO) => {
export const warehousing = async (id: number) => {
return await request.get({ url: `/heli/storage-in/warehousing?id=` + id })
}
// 查询入库单详情
export const updateIsPrint = async (id: number) => {
return await request.get({ url: `/heli/storage-in/updateIsPrint?id=` + id })
}

View File

@ -15,8 +15,8 @@
<el-form-item label="零件名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="件状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择标准件状态" clearable class="!w-240px">
<el-form-item label="件状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择件状态" clearable class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_MATERIAL_PLAN_BOOM_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>

View File

@ -142,7 +142,7 @@ const subBoomFormRef = ref()
const closeForm = async () => {
router.push({ path: '/purchase/management' })
router.push({ path: '/purchase/partmanagement' })
tagsViewStore.delVisitedView(router.currentRoute.value)
}
const userList = ref<UserApi.UserVO[]>([]) //

View File

@ -1095,10 +1095,9 @@ const closeForm = async () => {
tagsViewStore.delVisitedView(router.currentRoute.value)
}
const deleteForm = async () => {
//
await message.confirm('确认删除当前采购订单?')
await PurchaseOrderApi.deletePurchaseOrder(formData.value.id)
await PurchaseOrderNoApi.deletePurchaseOrderNo(formData.value.id)
router.push({ path: '/purchase/purchaseorder' })
tagsViewStore.delVisitedView(router.currentRoute.value)
}

View File

@ -222,6 +222,7 @@ import * as PurchaseOrderNoApi from '@/api/heli/purchaseorderno'
import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail'
import {PurchaseOrderNoDetailVO} from "@/api/heli/purchaseordernodetail";
import {ref} from "vue";
import {updateIsPrint} from "@/api/heli/purchaseorderno";
const dialogVisible = ref(false) //
const formLoading = ref(false) // 12
@ -391,6 +392,7 @@ function doPrint() {
iframe.contentWindow?.print()
setTimeout(() => document.body.removeChild(iframe), 1000)
}
PurchaseOrderNoApi.updateIsPrint(query.id);
}

View File

@ -368,6 +368,7 @@ function doPrint() {
iframe.contentWindow?.print()
setTimeout(() => document.body.removeChild(iframe), 1000)
}
PurchaseOrderNoApi.updateIsPrint(query.id)
}

View File

@ -44,7 +44,7 @@
<!-- 采购单信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">采购单信息</span>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">入库单信息</span>
</template>
<el-row>
<el-col>
@ -190,6 +190,7 @@ const tagsViewStore = useTagsViewStore()
import * as StorageinApi from '@/api/heli/storagein'
import * as StorageinDetailApi from '@/api/heli/storageindetail'
import {ref} from "vue";
import {updateIsPrint} from "@/api/heli/storagein";
const dialogVisible = ref(false) //
const formLoading = ref(false) // 12
@ -236,7 +237,6 @@ const queryParams = reactive({
})
//
onMounted(async () => {
//
formData.value = await StorageinApi.getStorageIn(query.id)
getList();
})
@ -361,6 +361,7 @@ function doPrint() {
iframe.contentWindow?.print()
setTimeout(() => document.body.removeChild(iframe), 1000)
}
StorageinApi.updateIsPrint(query.id);
}

View File

@ -412,7 +412,7 @@ v-if="'detail' != active && (scope.row.beginProduce == 0 && scope.row.procedureS
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">操作日志</span>
<el-button @click="goback" size="large"> </el-button>
<el-button @click="goback" size="large" style="margin-left: 5rem"> </el-button>
<el-button
v-if="active != 'detail' && formData.dispatchStatus == 1" @click="submitForm('SAVE')" type="primary"
:disabled="formLoading" size="large"> </el-button>

View File

@ -12,17 +12,17 @@
:inline="true"
label-width="110px"
>
<el-form-item label="起始日期" prop="startTime">
<el-date-picker
v-model="queryParams.startTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
class="!w-280px"
/>
</el-form-item>
<el-form-item label="结束日期" prop="startTime">
<!-- <el-form-item label="起始日期" prop="startTime">-->
<!-- <el-date-picker-->
<!-- v-model="queryParams.startTime"-->
<!-- value-format="YYYY-MM-DD HH:mm:ss"-->
<!-- type="daterange"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- class="!w-280px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="报工日期" prop="endTime">
<el-date-picker
v-model="queryParams.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
@ -248,10 +248,6 @@ const handleDelete = async (id: number) => {
}
//
const setDefaultDate = () => {
queryParams.startTime = [
dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss')
]
queryParams.endTime = [
dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss')

View File

@ -38,9 +38,10 @@ isReport: 1,
dispatchStatus:2
}
const dataList = ref([])
const searchVal = ref("");
const getListData = async () => {
console.log("props.orderState");
console.log(props.orderState);
queryParams.pgType = props.orderState;
// 退
if (isLoading.value) return
@ -79,7 +80,13 @@ onShow(async () => {
dataList.value = []
await getListData()
})
const handleSearch = async (e) => {
queryParams.subOrDetailName = e.inputValue;
queryParams.pageNo = 1;
isFinish.value = false;
dataList.value = [];
await getListData();
};
const viewClick = async (item) => {
const params = {
id: item.id
@ -93,7 +100,17 @@ const viewClick = async (item) => {
uni.navigateTo({ url })
}
};
const handleScan = () => {
uni.scanCode({
success: (res) => {
searchVal.value = res.result
handleSearch({ inputValue: res.result })
},
fail: () => {
uni.showToast({ title: '扫码失败', icon: 'none' })
}
})
}
const handleDetail = (item) => {
const url = `/pages/pgMaster/pgMaster-detail?id=${item.id}`
uni.navigateTo({ url })
@ -132,6 +149,51 @@ const onRefresherrefresh = async () => {
<view class="title"></view>
<input class="uni-input" v-model="searchVal" @change="handleSearch" placeholder="根据编号搜索" />
</view> -->
<view class="search" v-if="props.orderState == '0'">
<view
style="
width: 100%;
display: flex;
align-items: center;
background: #e2f3ff;
border-radius: 20rpx;
padding: 0 8rpx;
height: 50px;
"
>
<input
class="uni-input"
v-model="searchVal"
placeholder="请输入项目或子项目名称"
:placeholder-style="'color:#28A0F8;'"
style="
flex: 1;
background: transparent;
border: none;
outline: none;
font-size: 25rpx;
color: #28a0f8;
height: 50px;
line-height: 50px;
"
@input="handleSearch({ inputValue: searchVal })"
clearable
/>
<view
style="
background: none;
border: none;
padding: 0 10rpx;
height: 50px;
display: flex;
align-items: center;
"
@click="handleScan"
>
<uni-icons type="scan" size="28" color="#28A0F8"></uni-icons>
</view>
</view>
</view>
<scroll-view enable-back-to-top scroll-y class="data-list" refresher-enabled :refresher-triggered="isTriggered"
@refresherrefresh="onRefresherrefresh" @scrolltolower="getListData">
<view class="item" v-for="item in dataList" :key="item.id" >
@ -192,17 +254,24 @@ const onRefresherrefresh = async () => {
<style lang="scss">
//
.search {
padding: 4rpx;
width: 80%;
margin: 30rpx auto;
padding: 0rpx;
width: 90%;
margin: auto;
margin-top: 20rpx;
position: relative;
.uni-input {
border: 1px solid #D1D6DB;
border: 1px solid #d1d6db;
height: 60rpx;
line-height: 60rpx;
padding: 4rpx 10rpx;
font-size: 32rpx;
border-radius: 6rpx;
border-radius: 10rpx;
}
.icons {
width: 30rpx;
position: absolute;
right: 40rpx;
top: 0rpx;
}
}

View File

@ -77,7 +77,25 @@ onShow(async () => {
dataList.value = []
await getListData()
})
const searchVal = ref("");
const handleSearch = async (e) => {
queryParams.subOrDetailName = e.inputValue;
queryParams.pageNo = 1;
isFinish.value = false;
dataList.value = [];
await getListData();
};
const handleScan = () => {
uni.scanCode({
success: (res) => {
searchVal.value = res.result
handleSearch({ inputValue: res.result })
},
fail: () => {
uni.showToast({ title: '扫码失败', icon: 'none' })
}
})
}
const handleDetail = (item) => {
const url = `/pages/zjPgMaster/zjPgMaster-detail?id=${item.id}`
uni.navigateTo({ url })
@ -124,6 +142,51 @@ const onRefresherrefresh = async () => {
<view class="title"></view>
<input class="uni-input" v-model="searchVal" @change="handleSearch" placeholder="根据编号搜索" />
</view> -->
<view class="search" v-if="props.orderState == '0'">
<view
style="
width: 100%;
display: flex;
align-items: center;
background: #e2f3ff;
border-radius: 20rpx;
padding: 0 8rpx;
height: 50px;
"
>
<input
class="uni-input"
v-model="searchVal"
placeholder="请输入项目或子项目名称"
:placeholder-style="'color:#28A0F8;'"
style="
flex: 1;
background: transparent;
border: none;
outline: none;
font-size: 25rpx;
color: #28a0f8;
height: 50px;
line-height: 50px;
"
@input="handleSearch({ inputValue: searchVal })"
clearable
/>
<view
style="
background: none;
border: none;
padding: 0 10rpx;
height: 50px;
display: flex;
align-items: center;
"
@click="handleScan"
>
<uni-icons type="scan" size="28" color="#28A0F8"></uni-icons>
</view>
</view>
</view>
<scroll-view enable-back-to-top scroll-y class="data-list" refresher-enabled :refresher-triggered="isTriggered"
@refresherrefresh="onRefresherrefresh" @scrolltolower="getListData">
<view class="item" v-for="item in dataList" :key="item.id" >
@ -187,20 +250,26 @@ const onRefresherrefresh = async () => {
<style lang="scss">
//
.search {
padding: 4rpx;
width: 80%;
margin: 30rpx auto;
padding: 0rpx;
width: 90%;
margin: auto;
margin-top: 20rpx;
position: relative;
.uni-input {
border: 1px solid #D1D6DB;
border: 1px solid #d1d6db;
height: 60rpx;
line-height: 60rpx;
padding: 4rpx 10rpx;
font-size: 32rpx;
border-radius: 6rpx;
border-radius: 10rpx;
}
.icons {
width: 30rpx;
position: absolute;
right: 40rpx;
top: 0rpx;
}
}
.data-list {
height: 90vh;
.item {