feat():生成采购单;

master
jiyufei 2 months ago
parent 65a8aae997
commit 8373c1c223

@ -2,7 +2,10 @@ package jnpf.service;
import jnpf.model.yysmaterialprocurementplan.*;
import jnpf.entity.*;
import java.math.BigDecimal;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -18,9 +21,19 @@ public interface YysMaterialProcurementItemService extends IService<YysMaterialP
/**
*
*
* @param id
* @param list
* @return
*/
String initPlan(String id, List<YysMaterialRequirementItemEntity> list);
/**
*
*
* @param materialId
* @param join
* @param nums
*/
void syncNums(String materialId, String join, BigDecimal nums);
}

@ -32,4 +32,10 @@ public interface YysMaterialProcurementOrderService extends IService<YysMaterial
void saveOrUpdate(YysMaterialProcurementOrderForm yysMaterialProcurementOrderForm,String id, boolean isSave) throws Exception;
/**
*
* @param form
* @return
*/
String initOrder(YysMaterialProcurementOrderForm form);
}

@ -43,4 +43,6 @@ public interface YysMaterialProcurementPlanService extends IService<YysMaterialP
* @return
*/
String initPlan(YysMaterialRequirementPlanEntity plan, List<YysMaterialRequirementItemEntity> list);
void commit(YysMaterialProcurementPlanForm yysMaterialProcurementPlanForm,String id, boolean isSave) throws Exception;
}

@ -89,4 +89,15 @@ public class YysMaterialProcurementItemServiceImpl extends ServiceImpl<YysMateri
}
return "生成失败";
}
@Override
public void syncNums(String materialId, String join, BigDecimal nums) {
YysMaterialProcurementItemEntity entity = this.getById(materialId);
if (ObjectUtil.isNull(entity)) {
return;
}
entity.setOrderQuantity(nums);
entity.setOrderNos(join);
this.updateById(entity);
}
}

@ -1,23 +1,38 @@
package jnpf.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.google.common.collect.Lists;
import jnpf.entity.*;
import jnpf.mapper.YysMaterialProcurementOrderMapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.model.yysmaterialprocurementorder.*;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import jnpf.util.GeneraterSwapUtil;
import jnpf.database.model.superQuery.SuperQueryJsonModel;
import jnpf.database.model.superQuery.ConditionJsonModel;
import jnpf.database.model.superQuery.SuperQueryConditionModel;
import java.lang.reflect.Field;
import com.baomidou.mybatisplus.annotation.TableField;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.CompletableFuture;
import java.util.regex.Pattern;
import jnpf.model.QueryModel;
import java.util.stream.Collectors;
import jnpf.base.model.ColumnDataModel;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jnpf.database.model.superQuery.SuperJsonModel;
@ -25,13 +40,20 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
import jnpf.base.UserInfo;
import jnpf.permission.entity.UserEntity;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
/**
*
* YysMaterialProcurementOrder
* V3.5
* https://www.jnpfsoft.com
@ -39,6 +61,7 @@ import jnpf.permission.entity.UserEntity;
* 2024-08-08
*/
@Service
@Slf4j
public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMaterialProcurementOrderMapper, YysMaterialProcurementOrderEntity> implements YysMaterialProcurementOrderService {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@ -46,11 +69,17 @@ public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMater
@Autowired
private UserProvider userProvider;
@Resource
private YysMaterialProcurementItemService yysMaterialProcurementItemService;
@Override
public List<YysMaterialProcurementOrderEntity> getList(YysMaterialProcurementOrderPagination yysMaterialProcurementOrderPagination) {
return getTypeList(yysMaterialProcurementOrderPagination, yysMaterialProcurementOrderPagination.getDataType());
}
/** 列表查询 */
/**
*
*/
@Override
public List<YysMaterialProcurementOrderEntity> getTypeList(YysMaterialProcurementOrderPagination yysMaterialProcurementOrderPagination, String dataType) {
String userId = userProvider.get().getUserId();
@ -270,27 +299,34 @@ public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMater
return this.list(yysMaterialProcurementOrderQueryWrapper);
}
}
@Override
public YysMaterialProcurementOrderEntity getInfo(String id) {
QueryWrapper<YysMaterialProcurementOrderEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(YysMaterialProcurementOrderEntity::getId, id);
return this.getOne(queryWrapper);
}
@Override
public void create(YysMaterialProcurementOrderEntity entity) {
this.save(entity);
}
@Override
public boolean update(String id, YysMaterialProcurementOrderEntity entity) {
return this.updateById(entity);
}
@Override
public void delete(YysMaterialProcurementOrderEntity entity) {
if (entity != null) {
this.removeById(entity.getId());
}
}
/** 验证表单唯一字段,正则,非空 i-0新增-1修改*/
/**
* i-0-1
*/
@Override
public String checkForm(YysMaterialProcurementOrderForm form, int i) {
boolean isUp = StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0");
@ -305,8 +341,10 @@ public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMater
}
return countRecover;
}
/**
* ()
*
* @param id
* @param yysMaterialProcurementOrderForm
* @return
@ -328,4 +366,37 @@ public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMater
this.saveOrUpdate(entity);
}
@Override
public String initOrder(YysMaterialProcurementOrderForm form) {
log.info("生成采购订单form{}", form);
if (CollectionUtils.isEmpty(form.getOrderData())) {
return "采购单信息为空";
}
String currentDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
List<YysMaterialProcurementOrderEntity> collect = form.getOrderData().stream().map(obj -> {
YysMaterialProcurementOrderEntity entity = BeanUtil.copyProperties(obj, YysMaterialProcurementOrderEntity.class);
String mainId = RandomUtil.uuId();
int index = 1;
String number = String.format("%03d" + "d", index);
entity.setId(mainId);
entity.setOrderNumber("PO" + currentDate + number);
entity.setCreatorTime(DateUtil.getNowDate());
entity.setCreatorUserId(userProvider.get().getUserId());
index++;
return entity;
}).collect(Collectors.toList());
boolean result = this.saveBatch(collect);
if (result) {
//需要更新采购物料表中的总下单数量以及单号
List<String> orders = collect.stream().map(YysMaterialProcurementOrderEntity::getOrderNumber).collect(Collectors.toList());
BigDecimal nums = collect.stream()
.map(YysMaterialProcurementOrderEntity::getOrderQuantity)
.reduce(BigDecimal.ZERO, BigDecimal::add);
String materialId = collect.get(0).getMaterialId();
CompletableFuture.runAsync(() -> yysMaterialProcurementItemService.syncNums(materialId, String.join(",", orders), nums));
return "生成成功";
}
return "生成失败";
}
}

@ -443,4 +443,53 @@ public class YysMaterialProcurementPlanServiceImpl extends ServiceImpl<YysMateri
}
return "生成成功";
}
/**
* ()
*
* @param id
* @param yysMaterialProcurementPlanForm
* @return
*/
@Override
@Transactional
public void commit(YysMaterialProcurementPlanForm yysMaterialProcurementPlanForm, String id, boolean isSave) throws Exception {
UserInfo userInfo = userProvider.get();
UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId());
yysMaterialProcurementPlanForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(YysMaterialProcurementPlanConstant.getFormData(), yysMaterialProcurementPlanForm), YysMaterialProcurementPlanForm.class);
YysMaterialProcurementPlanEntity entity = JsonUtil.getJsonToBean(yysMaterialProcurementPlanForm, YysMaterialProcurementPlanEntity.class);
if (isSave) {
String mainId = RandomUtil.uuId();
entity.setProcurementNumber(generaterSwapUtil.getBillNumber("procurementnumber", false));
entity.setId(mainId);
} else {
entity.setProcurementStatus("2");
//entity.setProcurementNumber(generaterSwapUtil.getBillNumber("procurementnumber", false));
}
this.saveOrUpdate(entity);
//YysMaterialProcurementItem子表数据新增修改
if (!isSave) {
QueryWrapper<YysMaterialProcurementItemEntity> YysMaterialProcurementItemqueryWrapper = new QueryWrapper<>();
YysMaterialProcurementItemqueryWrapper.lambda().eq(YysMaterialProcurementItemEntity::getMaterialProcurementPlanId, entity.getId());
yysMaterialProcurementItemService.remove(YysMaterialProcurementItemqueryWrapper);
}
if (yysMaterialProcurementPlanForm.getYysMaterialProcurementItemList() != null) {
List<YysMaterialProcurementItemEntity> tableField107 = JsonUtil.getJsonToList(yysMaterialProcurementPlanForm.getYysMaterialProcurementItemList(), YysMaterialProcurementItemEntity.class);
for (YysMaterialProcurementItemEntity entitys : tableField107) {
entitys.setId(RandomUtil.uuId());
entitys.setMaterialProcurementPlanId(entity.getId());
if (isSave) {
} else {
}
yysMaterialProcurementItemService.saveOrUpdate(entitys);
}
//每次修改的时候去修改下 采购表的修改时间和创建用户 其次统计数量
entity.setLastModifyTime(DateUtil.getNowDate());
entity.setLastModifyUserId(userInfo.getUserId());
this.saveOrUpdate(entity);
}
}
}

@ -13,18 +13,23 @@ import jnpf.entity.*;
import jnpf.util.*;
import jnpf.model.yysmaterialprocurementorder.*;
import lombok.extern.slf4j.Slf4j;
import oracle.jdbc.proxy.annotation.Post;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.*;
import jnpf.annotation.JnpfField;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.base.entity.ProvinceEntity;
import java.io.IOException;
import java.util.stream.Collectors;
import jnpf.engine.entity.FlowTaskEntity;
import jnpf.exception.WorkFlowException;
import org.springframework.web.multipart.MultipartFile;
@ -36,7 +41,9 @@ import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.File;
import jnpf.onlinedev.model.ExcelImFieldModel;
import jnpf.onlinedev.model.OnlineImport.ImportDataModel;
import jnpf.onlinedev.model.OnlineImport.ImportFormCheckUniqueModel;
@ -51,6 +58,7 @@ import org.springframework.transaction.annotation.Transactional;
/**
* YysMaterialProcurementOrder
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
@ -72,7 +80,6 @@ public class YysMaterialProcurementOrderController {
private YysMaterialProcurementOrderService yysMaterialProcurementOrderService;
@Autowired
private ConfigValueUtil configValueUtil;
@ -104,6 +111,7 @@ public class YysMaterialProcurementOrderController {
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
*
*
@ -124,6 +132,7 @@ public class YysMaterialProcurementOrderController {
}
return ActionResult.success("创建成功");
}
/**
* Excel
*
@ -283,8 +292,10 @@ public class YysMaterialProcurementOrderController {
}
return vo;
}
/**
*
*
* @param id
* @param yysMaterialProcurementOrderForm
* @return
@ -312,8 +323,10 @@ public class YysMaterialProcurementOrderController {
return ActionResult.fail("更新失败,数据不存在");
}
}
/**
*
*
* @param id
* @return
*/
@ -329,9 +342,11 @@ public class YysMaterialProcurementOrderController {
}
return ActionResult.success("删除成功");
}
/**
* ()
* 使-
*
* @param id
* @return
*/
@ -349,9 +364,11 @@ public class YysMaterialProcurementOrderController {
yysMaterialProcurementOrderMap = generaterSwapUtil.swapDataDetail(yysMaterialProcurementOrderMap, YysMaterialProcurementOrderConstant.getFormData(), "591255416864768197", false);
return ActionResult.success(yysMaterialProcurementOrderMap);
}
/**
* ()
* 使-
*
* @param id
* @return
*/
@ -370,4 +387,14 @@ public class YysMaterialProcurementOrderController {
return ActionResult.success(yysMaterialProcurementOrderMap);
}
@Operation(summary = "生成采购订单")
@PostMapping("/initOrder")
public ActionResult initOrder(@RequestBody YysMaterialProcurementOrderForm form) {
String result = yysMaterialProcurementOrderService.initOrder(form);
if (result.contains("成功")) {
return ActionResult.success(result);
}
return ActionResult.fail(result);
}
}

@ -399,4 +399,35 @@ public class YysMaterialProcurementPlanController {
return ActionResult.success(yysMaterialProcurementPlanMap);
}
/**
*
*
* @param id
* @param yysMaterialProcurementPlanForm
* @return
*/
@PutMapping("/commit/{id}")
@Operation(summary = "提交")
public ActionResult commit(@PathVariable("id") String id, @RequestBody @Valid YysMaterialProcurementPlanForm yysMaterialProcurementPlanForm,
@RequestParam(value = "isImport", required = false) boolean isImport) {
yysMaterialProcurementPlanForm.setId(id);
if (!isImport) {
String b = yysMaterialProcurementPlanService.checkForm(yysMaterialProcurementPlanForm, 1);
if (StringUtil.isNotEmpty(b)) {
return ActionResult.fail(b);
}
}
YysMaterialProcurementPlanEntity entity = yysMaterialProcurementPlanService.getInfo(id);
if (entity != null) {
try {
yysMaterialProcurementPlanService.commit(yysMaterialProcurementPlanForm, id, false);
} catch (Exception e) {
return ActionResult.fail("修改数据失败");
}
return ActionResult.success("更新成功");
} else {
return ActionResult.fail("更新失败,数据不存在");
}
}
}

@ -2,9 +2,11 @@ package jnpf.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;
import java.math.BigDecimal;
import java.math.BigDecimal;
/**
*
*
@ -34,6 +36,10 @@ public class YysMaterialProcurementItemEntity {
private String unit;
@TableField(value = "PROCUREMENT_PLAN_NUMBER", updateStrategy = FieldStrategy.IGNORED)
private BigDecimal procurementPlanNumber;
@TableField(value = "order_quantity", updateStrategy = FieldStrategy.IGNORED)
private BigDecimal orderQuantity;
@TableField(value = "order_nos", updateStrategy = FieldStrategy.IGNORED)
private String orderNos;
@TableField(value = "F_CREATOR_TIME", fill = FieldFill.INSERT)
private Date creatorTime;
@TableField(value = "F_CREATOR_USER_ID", fill = FieldFill.INSERT)

@ -29,6 +29,8 @@ public class YysMaterialProcurementOrderEntity {
private String procurementNumber;
@TableField(value = "SUPPLIER" , updateStrategy = FieldStrategy.IGNORED)
private String supplier;
@TableField(value = "MATERIAL_ID" , updateStrategy = FieldStrategy.IGNORED)
private String materialId;
@TableField(value = "MATERIAL_CODE" , updateStrategy = FieldStrategy.IGNORED)
private String materialCode;
@TableField(value = "MATERIAL_NAME" , updateStrategy = FieldStrategy.IGNORED)

@ -1,12 +1,15 @@
package jnpf.model.yysmaterialprocurementorder;
import lombok.Data;
import java.util.List;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* YysMaterialProcurementOrder
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
@ -14,64 +17,115 @@ import com.fasterxml.jackson.annotation.JsonProperty;
*/
@Data
public class YysMaterialProcurementOrderForm {
/** 主键 */
/**
*
*/
private String id;
/** 采购单号 **/
/**
*
**/
@JsonProperty("orderNumber")
private String orderNumber;
/** 单据日期 **/
/**
*
**/
@JsonProperty("orderDate")
private String orderDate;
/** 采购计划单号 **/
/**
*
**/
@JsonProperty("procurementNumber")
private String procurementNumber;
/** 供应商 **/
/**
*
**/
@JsonProperty("supplier")
private String supplier;
/** 物料编码 **/
/**
*
**/
@JsonProperty("materialID")
private String materialId;
/**
/**
*
**/
@JsonProperty("materialCode")
private String materialCode;
/** 物料名称 **/
/**
*
**/
@JsonProperty("materialName")
private String materialName;
/** 规格型号 **/
/**
*
**/
@JsonProperty("specification")
private String specification;
/** 下单数量 **/
/**
*
**/
@JsonProperty("orderQuantity")
private BigDecimal orderQuantity;
/** 计量单位 **/
/**
*
**/
@JsonProperty("unit")
private String unit;
/** 总投产数量 **/
/**
*
**/
@JsonProperty("totalProductionQuantity")
private BigDecimal totalProductionQuantity;
/** 总发货数量 **/
/**
*
**/
@JsonProperty("totalSendQuantity")
private BigDecimal totalSendQuantity;
/** 要求到货日期 **/
/**
*
**/
@JsonProperty("requestDeliveryDate")
private String requestDeliveryDate;
/** 延期原因 **/
/**
*
**/
@JsonProperty("delayReason")
private String delayReason;
/** 延期交货日期 **/
/**
*
**/
@JsonProperty("delayedDeliveryDate")
private String delayedDeliveryDate;
/** 分批发货日期 **/
/**
*
**/
@JsonProperty("batchDeliveryDate")
private String batchDeliveryDate;
/** 分批发货数量 **/
/**
*
**/
@JsonProperty("batchShipmentQuantity")
private BigDecimal batchShipmentQuantity;
/** 确认到货数量 **/
/**
*
**/
@JsonProperty("confirmQuantityReceived")
private BigDecimal confirmQuantityReceived;
/** 单据状态 **/
/**
*
**/
@JsonProperty("orderStatus")
private Object orderStatus;
/** 订单附件 **/
/**
*
**/
@JsonProperty("orderFiles")
private Object orderFiles;
/**
*
*/
private List<YysMaterialProcurementOrderForm> orderData;
}

@ -47,7 +47,8 @@
<el-col :span="24">
<div style="padding:15px 0px">
<span style="color: #409EFF;"></span>
<span style="font-size: 14px;font-weight: 500;color:rgb(102, 102, 102);">物料明细</span>
<span
style="font-size: 14px;font-weight: 500;color:rgb(102, 102, 102);">物料明细</span>
</div>
</el-col>
<el-table :data="dataForm.tableField107" size='mini' border>
@ -91,6 +92,16 @@
<p>{{ scope.row.unit }}</p>
</template>
</el-table-column>
<el-table-column prop="orderQuantity" label="已下单数量">
<template slot-scope="scope">
<p>{{ scope.row.orderQuantity }}</p>
</template>
</el-table-column>
<el-table-column prop="orderNos" label="采购单号">
<template slot-scope="scope">
<p>{{ scope.row.orderNos }}</p>
</template>
</el-table-column>
</el-table>
</jnpf-form-tip-item>
</el-col>

@ -2,10 +2,7 @@
<transition name="el-zoom-in-center">
<div class="JNPF-preview-main">
<div class="JNPF-common-page-header">
<el-page-header
@back="goBack"
:content="!dataForm.id ? '新建' : '编辑'"
/>
<el-page-header @back="goBack" :content="!dataForm.id ? '新建' : '编辑'" />
<div class="options">
<!-- <el-dropdown class="dropdown" placement="bottom">
<el-button style="width:70px">
@ -20,135 +17,67 @@
{{ '下一条' }}
</el-dropdown-item>
</template>
<el-dropdown-item type="primary" @click.native="dataFormSubmit(2)"
:loading="continueBtnLoading" :disabled='btnLoading'>
<el-dropdown-item type="primary" @click.native="dataFormSubmit(2)" :loading="continueBtnLoading" :disabled='btnLoading'>
{{ !dataForm.id ? '确定并新增' : '确定并继续' }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown> -->
<el-button
type="primary"
@click="dataFormSubmit()"
:loading="btnLoading"
:disabled="continueBtnLoading"
>
</el-button
>
<el-button
type="success"
@click="dataFormSubmit()"
:loading="btnLoading"
:disabled="continueBtnLoading"
>
提交</el-button
>
<el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading" :disabled="continueBtnLoading">
</el-button>
<el-button type="success" @click="submit()" :loading="btnLoading" :disabled="continueBtnLoading">
提交</el-button>
<el-button @click="goBack"> </el-button>
</div>
</div>
<el-row
:gutter="15"
class=" main"
:style="{ margin: '0 auto', width: '100%' }"
>
<el-form
ref="formRef"
:model="dataForm"
:rules="dataRule"
size="small"
label-width="150px"
label-position="right"
>
<el-row :gutter="15" class=" main" :style="{ margin: '0 auto', width: '100%' }">
<el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small" label-width="150px"
label-position="right">
<template v-if="!loading">
<!-- 具体表单 -->
<el-col :span="24">
<div style="padding:15px 0px">
<span style="color: #409EFF;"></span>
<span
style="font-size: 14px;font-weight: 500;color:rgb(102, 102, 102);"
>基础信息</span
>
<span style="font-size: 14px;font-weight: 500;color:rgb(102, 102, 102);">基础信息</span>
</div>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="采购计划单号" prop="procurementNumber">
<JnpfInput
v-model="dataForm.procurementNumber"
@change="changeData('procurementNumber', -1)"
placeholder="系统自动生成"
readonly
:style="{ width: '100%' }"
>
<JnpfInput v-model="dataForm.procurementNumber" @change="changeData('procurementNumber', -1)"
placeholder="系统自动生成" readonly :style="{ width: '100%' }">
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="单据日期" prop="procurementDate">
<JnpfDatePicker
v-model="dataForm.procurementDate"
@change="changeData('procurementDate', -1)"
:startTime="dateTime(false, 1, 1, '', '')"
:endTime="dateTime(false, 1, 1, '', '')"
placeholder="请选择"
clearable
:style="{ width: '100%' }"
type="date"
format="yyyy-MM-dd"
>
<JnpfDatePicker v-model="dataForm.procurementDate" @change="changeData('procurementDate', -1)"
:startTime="dateTime(false, 1, 1, '', '')" :endTime="dateTime(false, 1, 1, '', '')" placeholder="请选择"
clearable disabled :style="{ width: '100%' }" type="date" format="yyyy-MM-dd">
</JnpfDatePicker>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="年月" prop="procurementYearMonth">
<JnpfDatePicker
v-model="dataForm.procurementYearMonth"
@change="changeData('procurementYearMonth', -1)"
:startTime="dateTime(false, 1, 1, '', '')"
:endTime="dateTime(false, 1, 1, '', '')"
placeholder="请选择"
clearable
:style="{ width: '100%' }"
type="month"
format="yyyy-MM"
>
<JnpfDatePicker v-model="dataForm.procurementYearMonth" @change="changeData('procurementYearMonth', -1)"
:startTime="dateTime(false, 1, 1, '', '')" :endTime="dateTime(false, 1, 1, '', '')" placeholder="请选择"
clearable disabled :style="{ width: '100%' }" type="month" format="yyyy-MM">
</JnpfDatePicker>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="物料需求计划单号" prop="planNumber">
<JnpfPopupSelect
v-model="dataForm.planNumber"
@change="changeData('planNumber', -1)"
:rowIndex="null"
:formData="dataForm"
:templateJson="interfaceRes.planNumber"
placeholder="请选择"
propsValue="plan_number"
popupWidth="800px"
popupTitle="选择数据"
popupType="dialog"
relationField="plan_number"
field="planNumber"
interfaceId="591169965881556997"
:pageSize="20"
:columnOptions="planNumbercolumnOptions"
clearable
:style="{ width: '100%' }"
>
<JnpfPopupSelect v-model="dataForm.planNumber" @change="changeData('planNumber', -1)" :rowIndex="null"
:formData="dataForm" :templateJson="interfaceRes.planNumber" placeholder="请选择"
propsValue="plan_number" popupWidth="800px" popupTitle="选择数据" popupType="dialog"
relationField="plan_number" field="planNumber" interfaceId="591169965881556997" :pageSize="20"
:columnOptions="planNumbercolumnOptions" clearable disabled :style="{ width: '100%' }">
</JnpfPopupSelect>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24">
<jnpf-form-tip-item label="备注" prop="reamrk">
<JnpfTextarea
v-model="dataForm.reamrk"
@change="changeData('reamrk', -1)"
placeholder="请输入"
:style="{ width: '100%' }"
true
type="textarea"
:autosize="{ minRows: 4, maxRows: 4 }"
>
<JnpfTextarea v-model="dataForm.reamrk" @change="changeData('reamrk', -1)" placeholder="请输入"
:style="{ width: '100%' }" true type="textarea" :autosize="{ minRows: 4, maxRows: 4 }">
</JnpfTextarea>
</jnpf-form-tip-item>
</el-col>
@ -157,40 +86,22 @@
<el-col :span="24">
<div style="padding:15px 0px">
<span style="color: #409EFF;"></span>
<span
style="font-size: 14px;font-weight: 500;color:rgb(102, 102, 102);"
>物料明细</span
>
<span style="font-size: 14px;font-weight: 500;color:rgb(102, 102, 102);">物料明细</span>
</div>
</el-col>
<el-table
:data="dataForm.yysMaterialProcurementItemList"
size="mini"
border
>
<el-table-column
type="index"
width="50"
label="序号"
align="center"
/>
<el-table :data="dataForm.yysMaterialProcurementItemList" size="mini" border>
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column label="物料编码" prop="materialCode">
<template slot="header" v-if="false">
<span class="required-sign">*</span>物料编码
</template>
<template slot-scope="scope">
<JnpfInput
v-model="scope.row.materialCode"
@change="
<JnpfInput v-model="scope.row.materialCode" @change="
changeData(
'yysmaterialprocurementitem-materialCode',
scope.$index
)
"
placeholder="请输入"
clearable
:style="{ width: '100%' }"
>
" placeholder="请输入" clearable :style="{ width: '100%' }">
</JnpfInput>
</template>
</el-table-column>
@ -199,18 +110,12 @@
<span class="required-sign">*</span>物料名称
</template>
<template slot-scope="scope">
<JnpfInput
v-model="scope.row.materialName"
@change="
<JnpfInput v-model="scope.row.materialName" @change="
changeData(
'yysmaterialprocurementitem-materialName',
scope.$index
)
"
placeholder="请输入"
clearable
:style="{ width: '100%' }"
>
" placeholder="请输入" clearable :style="{ width: '100%' }">
</JnpfInput>
</template>
</el-table-column>
@ -219,18 +124,12 @@
<span class="required-sign">*</span>物料类型
</template>
<template slot-scope="scope">
<JnpfInput
v-model="scope.row.materialType"
@change="
<JnpfInput v-model="scope.row.materialType" @change="
changeData(
'yysmaterialprocurementitem-materialType',
scope.$index
)
"
placeholder="请输入"
clearable
:style="{ width: '100%' }"
>
" placeholder="请输入" clearable :style="{ width: '100%' }">
</JnpfInput>
</template>
</el-table-column>
@ -239,18 +138,12 @@
<span class="required-sign">*</span>规格型号
</template>
<template slot-scope="scope">
<JnpfInput
v-model="scope.row.specification"
@change="
<JnpfInput v-model="scope.row.specification" @change="
changeData(
'yysmaterialprocurementitem-specification',
scope.$index
)
"
placeholder="请输入"
clearable
:style="{ width: '100%' }"
>
" placeholder="请输入" clearable :style="{ width: '100%' }">
</JnpfInput>
</template>
</el-table-column>
@ -259,41 +152,26 @@
<span class="required-sign">*</span>欠缺量
</template>
<template slot-scope="scope">
<JnpfInputNumber
v-model="scope.row.lackNumber"
@change="
<JnpfInputNumber v-model="scope.row.lackNumber" @change="
changeData(
'yysmaterialprocurementitem-lackNumber',
scope.$index
)
"
placeholder="数字文本"
:precision="2"
:step="1"
>
" placeholder="数字文本" :precision="2" :step="1" :style="{ width: '100%' }">
</JnpfInputNumber>
</template>
</el-table-column>
<el-table-column
label="拟采购量"
prop="procurementPlanNumber"
>
<el-table-column label="拟采购量" prop="procurementPlanNumber">
<template slot="header" v-if="false">
<span class="required-sign">*</span>拟采购量
</template>
<template slot-scope="scope">
<JnpfInputNumber
v-model="scope.row.procurementPlanNumber"
@change="
<JnpfInputNumber v-model="scope.row.procurementPlanNumber" @change="
changeData(
'yysmaterialprocurementitem-procurementPlanNumber',
scope.$index
)
"
placeholder="数字文本"
:precision="2"
:step="1"
>
" placeholder="数字文本" :precision="2" :step="1" :style="{ width: '100%' }">
</JnpfInputNumber>
</template>
</el-table-column>
@ -302,106 +180,65 @@
<span class="required-sign">*</span>计量单位
</template>
<template slot-scope="scope">
<JnpfInput
v-model="scope.row.unit"
@change="
<JnpfInput v-model="scope.row.unit" @change="
changeData(
'yysmaterialprocurementitem-unit',
scope.$index
)
"
placeholder="请输入"
clearable
:style="{ width: '100%' }"
>
" placeholder="请输入" clearable :style="{ width: '100%' }">
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="已下单数量" prop="orderQuantity">
</el-table-column>
<el-table-column label="采购单号" prop="orderNos">
</el-table-column>
<el-table-column label="操作" width="200">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
class="JNPF-table-delBtn"
@click="delyysMaterialProcurementItemList(scope.$index)"
>删除</el-button
>
<el-button
size="mini"
type="text"
@click="fnProcurementOrderCreate(scope.row)"
>生成采购单</el-button
>
<el-button size="mini" type="text" class="JNPF-table-delBtn"
@click="delyysMaterialProcurementItemList(scope.$index)">删除</el-button>
<el-button size="mini" type="text" @click="fnProcurementOrderCreate(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<div
class="table-actions"
@click="addyysMaterialProcurementItemList()"
>
<div class="table-actions" @click="addyysMaterialProcurementItemList()">
<el-button type="text" icon="el-icon-plus">添加</el-button>
</div>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="创建人" prop="creatorUserId">
<JnpfInput
v-model="dataForm.creatorUserId"
@change="changeData('creatorUserId', -1)"
placeholder="自动生成"
disabled
clearable
:style="{ width: '100%' }"
>
<JnpfInput v-model="dataForm.creatorUserId" @change="changeData('creatorUserId', -1)" placeholder="自动生成"
disabled clearable :style="{ width: '100%' }">
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="创建时间" prop="creatorTime">
<JnpfDatePicker
v-model="dataForm.creatorTime"
@change="changeData('creatorTime', -1)"
:startTime="dateTime(false, 1, 1, '', '')"
:endTime="dateTime(false, 1, 1, '', '')"
placeholder="自动生成"
disabled
clearable
:style="{ width: '100%' }"
type="date"
format="yyyy-MM-dd"
>
<JnpfDatePicker v-model="dataForm.creatorTime" @change="changeData('creatorTime', -1)"
:startTime="dateTime(false, 1, 1, '', '')" :endTime="dateTime(false, 1, 1, '', '')" placeholder="自动生成"
disabled clearable :style="{ width: '100%' }" type="date" format="yyyy-MM-dd">
</JnpfDatePicker>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="修改人" prop="lastModifyUserId">
<JnpfInput
v-model="dataForm.lastModifyUserId"
@change="changeData('lastModifyUserId', -1)"
placeholder="修改时记录"
disabled
clearable
:style="{ width: '100%' }"
>
<JnpfInput v-model="dataForm.lastModifyUserId" @change="changeData('lastModifyUserId', -1)"
placeholder="修改时记录" disabled clearable :style="{ width: '100%' }">
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="修改时间" prop="lastModifyTime">
<JnpfDatePicker
v-model="dataForm.lastModifyTime"
@change="changeData('lastModifyTime', -1)"
:startTime="dateTime(false, 1, 1, '', '')"
:endTime="dateTime(false, 1, 1, '', '')"
placeholder="修改时记录"
disabled
clearable
:style="{ width: '100%' }"
type="date"
format="yyyy-MM-dd"
>
<JnpfDatePicker v-model="dataForm.lastModifyTime" @change="changeData('lastModifyTime', -1)"
:startTime="dateTime(false, 1, 1, '', '')" :endTime="dateTime(false, 1, 1, '', '')"
placeholder="修改时记录" disabled clearable :style="{ width: '100%' }" type="date" format="yyyy-MM-dd">
</JnpfDatePicker>
</jnpf-form-tip-item>
</el-col>
@ -409,66 +246,36 @@
</template>
</el-form>
<el-col :span="24">
<el-row
v-if="isOrdering == true"
:style="{ margin: '0 auto', width: '100%' }"
>
<el-col :span="3"><div style="height:10px;"></div></el-col>
<el-row v-if="isOrdering == true" :style="{ margin: '0 auto', width: '100%' }">
<el-col :span="3">
<div style="height:10px;"></div>
</el-col>
<el-col :span="16">
<el-row :style="{ margin: '0 auto', width: '100%' }">
<el-col :span="24" style="padding: 20px 0px;"
>生成采购单
<el-col :span="24" style="padding: 20px 0px;">生成采购单
</el-col>
<el-col :span="24">
<el-row style="padding: 20px 0px;">
<el-col :span="5"
>物料编码{{ procurementOrderItem.materialCode }}</el-col
>
<el-col :span="5"
>物料名称{{ procurementOrderItem.materialName }}</el-col
>
<el-col :span="5"
>物料类型{{ procurementOrderItem.materialType }}</el-col
>
<el-col :span="5"
>欠缺量{{ procurementOrderItem.lackNumber }}</el-col
>
<el-col :span="4"
>计量单位{{ procurementOrderItem.unit }}</el-col
>
<el-col :span="5">物料编码{{ procurementOrderItem.materialCode }}</el-col>
<el-col :span="5">物料名称{{ procurementOrderItem.materialName }}</el-col>
<el-col :span="5">物料类型{{ procurementOrderItem.materialType }}</el-col>
<el-col :span="5">欠缺量{{ procurementOrderItem.lackNumber }}</el-col>
<el-col :span="4">计量单位{{ procurementOrderItem.unit }}</el-col>
</el-row>
</el-col>
<el-col :span="24">
<el-table :data="procurementOrderList" size="mini" border>
<el-table-column
type="index"
width="50"
label="序号"
align="center"
/>
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column label="供应商" prop="supplier">
<template slot="header">
<span class="required-sign">*</span> 供应商
</template>
<template slot-scope="scope">
<JnpfPopupSelect
v-model="scope.row.supplier"
:rowIndex="null"
:formData="scope.row"
:templateJson="[]"
placeholder="请选择"
propsValue="supplier_id"
popupWidth="800px"
popupTitle="选择数据"
popupType="dialog"
relationField="supplier_cname"
field="supplier"
interfaceId="591554794397630469"
:pageSize="20"
:columnOptions="suppliercolumnOptions"
clearable
:style="{ width: '100%' }"
>
<JnpfPopupSelect v-model="scope.row.supplier" :rowIndex="null" :formData="scope.row"
:templateJson="[]" placeholder="请选择" propsValue="supplier_id" popupWidth="800px"
popupTitle="选择数据" popupType="dialog" relationField="supplier_cname" field="supplier"
interfaceId="591554794397630469" :pageSize="20" :columnOptions="suppliercolumnOptions"
clearable :style="{ width: '100%' }">
</JnpfPopupSelect>
</template>
</el-table-column>
@ -477,82 +284,41 @@
<span class="required-sign">*</span> 下单数量
</template>
<template slot-scope="scope">
<JnpfInputNumber
v-model="scope.row.orderQuantity"
placeholder="数字文本"
:precision="2"
:step="1"
>
<JnpfInputNumber v-model="scope.row.orderQuantity" placeholder="数字文本" :precision="2" :step="1">
</JnpfInputNumber>
</template>
</el-table-column>
<el-table-column
label="要求到货日期"
prop="requestDeliveryDate"
>
<el-table-column label="要求到货日期" prop="requestDeliveryDate">
<template slot-scope="scope">
<JnpfDatePicker
v-model="scope.row.requestDeliveryDate"
:startTime="dateTime(false, 1, 1, '', '')"
:endTime="dateTime(false, 1, 1, '', '')"
placeholder="请选择"
clearable
:style="{ width: '100%' }"
type="month"
format="yyyy-MM-dd"
>
<JnpfDatePicker v-model="scope.row.requestDeliveryDate"
:startTime="dateTime(false, 1, 1, '', '')" :endTime="dateTime(false, 1, 1, '', '')"
placeholder="请选择" clearable :style="{ width: '100%' }" type="month" format="yyyy-MM-dd">
</JnpfDatePicker>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
class="JNPF-table-delBtn"
@click="
<el-button size="mini" type="text" class="JNPF-table-delBtn" @click="
fnProcurementOrderItemDel(scope.$index)
"
>删除</el-button
>
">删除</el-button>
</template>
</el-table-column>
</el-table>
<div
class="table-actions"
@click="fnProcurementOrderItemAdd()"
>
<div class="table-actions" @click="fnProcurementOrderItemAdd()">
<el-button type="text" icon="el-icon-plus">添加</el-button>
</div>
</el-col>
<el-col
:span="24"
:style="{ textAlign: 'center', margin: '30px 0px' }"
>
<el-button
:style="{ margin: '0px 30px' }"
@click="fnProcurementOrderCancel"
>取消</el-button
>
<el-button
type="primary"
:style="{ margin: '0px 30px' }"
@click="fnProcurementOrderSub"
>提交</el-button
>
<el-col :span="24" :style="{ textAlign: 'center', margin: '30px 0px' }">
<el-button :style="{ margin: '0px 30px' }" @click="fnProcurementOrderCancel"></el-button>
<el-button type="primary" :style="{ margin: '0px 30px' }"
@click="fnProcurementOrderSub">提交</el-button>
</el-col>
</el-row>
</el-col>
</el-row>
</el-col>
<SelectDialog
v-if="selectDialogVisible"
:config="currTableConf"
:formData="dataForm"
ref="selectDialog"
@select="addForSelect"
@close="selectDialogVisible = false"
/>
<SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm" ref="selectDialog"
@select="addForSelect" @close="selectDialogVisible = false" />
</el-row>
</div>
</transition>
@ -760,6 +526,7 @@ export default {
},
fnProcurementOrderSub() {
console.log(this.procurementOrderList);
///api/example/YysMaterialProcurementOrder/initOrder
},
prev() {
this.index--;
@ -902,6 +669,38 @@ export default {
}
});
},
submit(type) {
this.dataFormSubmitType = type ? type : 0;
this.$refs["formRef"].validate(valid => {
if (valid) {
if (!this.yysmaterialprocurementitemExist()) return;
let _data = this.dataList();
request({
url: "/api/example/YysMaterialProcurementPlan/commit/" + this.dataForm.id,
method: "PUT",
data: _data
})
.then(res => {
this.$message({
message: res.msg,
type: "success",
duration: 1000,
onClose: () => {
if (this.dataFormSubmitType == 2)
return (this.continueBtnLoading = false);
this.visible = false;
this.btnLoading = false;
this.$emit("refresh", true);
}
});
})
.catch(() => {
this.btnLoading = false;
this.continueBtnLoading = false;
});
}
});
},
request() {
let _data = this.dataList();
if (this.dataFormSubmitType == 2) {

Loading…
Cancel
Save