Commit e3fc65ee by 江和松

采购入库流程逻辑修改

入库质检后直接生成采购入库单,采购入库单提交后才进入实时库存,并且修改采购单信息
parent fc7ddf93
......@@ -7,15 +7,15 @@ import com.baosight.hggp.core.enums.DeleteFlagEnum;
import com.baosight.hggp.hg.cg.tools.HGCGTools;
import com.baosight.hggp.hg.constant.HGConstant;
import com.baosight.hggp.hg.kc.domain.HGKC001;
import com.baosight.hggp.hg.kc.domain.HGKC003;
import com.baosight.hggp.hg.kc.tools.HGKCTools;
import com.baosight.hggp.hg.kc.utils.HGKCUtils;
import com.baosight.hggp.util.AssertUtils;
import com.baosight.hggp.util.CommonMethod;
import com.baosight.hggp.util.EiInfoUtils;
import com.baosight.hggp.util.LogUtils;
import com.baosight.hggp.util.MapUtils;
import com.baosight.hggp.util.*;
import com.baosight.iplat4j.core.ei.EiBlock;
import com.baosight.iplat4j.core.ei.EiConstant;
import com.baosight.iplat4j.core.ei.EiInfo;
import com.baosight.iplat4j.core.exception.PlatException;
import com.baosight.iplat4j.core.resource.I18nMessages;
import com.baosight.iplat4j.core.service.impl.ServiceBase;
import java.util.Arrays;
......@@ -116,7 +116,7 @@ public class ServiceHGKC001 extends ServiceBase {
*/
private void saveData(List<HGKC001> fCg004s, Map<String, HGKC001> dbCg004Map) {
for (HGKC001 fCg004 : fCg004s) {
String depositNo = fCg004.getDepositNo();
DaoUtils.update(HGKC001.UPDATE_WH_CODE, fCg004);
}
}
......@@ -179,4 +179,46 @@ public class ServiceHGKC001 extends ServiceBase {
}
}
/**
* 修改提交状态
* @param inInfo
* @return
*/
public EiInfo updateSubmitStatus(EiInfo inInfo){
int i = 0;
try {
HGKC001 hgkc001 = new HGKC001();
EiBlock eiBlock = inInfo.getBlock(EiConstant.resultBlock);
for (i = 0; i < eiBlock.getRowCount(); i++) {
Map<?, ?> map = eiBlock.getRow(i);
hgkc001.fromMap(map);
hgkc001 = HGKCTools.HgKc001.getId(hgkc001.getId());
hgkc001.setSubmitStatus(HGConstant.ProductStatus.YTJ);
// 校验数据
this.checkSubmitData(hgkc001);
DaoUtils.update(HGKC001.UPDATE_SUBMIT_STATUS, hgkc001);
// 更新库存数量
HGKCUtils.HgKc010.updateInv(hgkc001.getCompanyCode(), hgkc001.getWhCode(), hgkc001.getInventCode(),
hgkc001.getDepositQty(), hgkc001.getDepositUnitWeight(), hgkc001.getDepositWeight());
// 更新收货单状态
HGCGTools.HgCg003.updateStatus(hgkc001.getReceiveNo(), HGConstant.CgReceiveStatus.S_5);
}
inInfo.setStatus(EiConstant.STATUS_SUCCESS);
inInfo.setMsgByKey("ep.1000", new String[]{String.valueOf(i), I18nMessages.getText("label.update", "提交")});
} catch (PlatException e) {
e.printStackTrace();
inInfo.setStatus(EiConstant.STATUS_FAILURE);
ErrorCodeUtils.handleUpdateException(inInfo,i,e);
logError("修改失败", e.getMessage());
return inInfo;
}
return inInfo;
}
private void checkSubmitData(HGKC001 hgkc001) {
AssertUtils.isEmpty(hgkc001.getWhCode(),"仓库编码不能为空!");
AssertUtils.isEmpty(hgkc001.getWhName(),"仓库名称不能为空!");
}
}
......@@ -34,7 +34,10 @@
THICK as "thick", <!-- 厚度 -->
DEPOSIT_QTY as "depositQty", <!-- 入库数量 -->
DEPOSIT_UNIT_WEIGHT as "depositUnitWeight", <!-- 入库单重 -->
DEPOSIT_WEIGHT as "depositWeight" <!-- 入库重量 -->
DEPOSIT_WEIGHT as "depositWeight", <!-- 入库重量 -->
STORAGE_TYPE as "storageType", <!-- 入库类型:1:入库 2:退回 -->
IS_RETURN as "isReturn", <!-- 是否退回:0:否 1:是 -->
SUBMIT_STATUS as "submitStatus" <!-- 提交状态 -->
</sql>
<sql id="condition">
......@@ -93,6 +96,15 @@
<isNotEmpty prepend=" AND " property="unit">
UNIT = #unit#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="submitStatus">
SUBMIT_STATUS = #submitStatus#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="isReturn">
IS_RETURN = #isReturn#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="storageType">
STORAGE_TYPE = #storageType#
</isNotEmpty>
</sql>
<sql id="idCondition">
......@@ -173,13 +185,17 @@
THICK, <!-- 厚度 -->
DEPOSIT_QTY, <!-- 入库数量 -->
DEPOSIT_UNIT_WEIGHT, <!-- 入库单重 -->
DEPOSIT_WEIGHT <!-- 入库重量 -->
DEPOSIT_WEIGHT, <!-- 入库重量 -->
STORAGE_TYPE, <!-- 入库类型:1:入库 2:退回 -->
IS_RETURN, <!-- 是否退回:0:否 1:是 -->
SUBMIT_STATUS
) VALUES (
#accountCode#, #depCode#, #createdBy#, #createdName#, #createdTime#,
#deleteFlag#, #companyCode#, #companyName#, #depositDate#, #depositNo#,
#receiveNo#, #planNo#, #contractNo#, #whCode#, #whName#, #inventType#,
#inventCode#, #inventName#, #specId#, #spec#, #material#,
#unit#, #length#, #width#, #thick#, #depositQty#, #depositUnitWeight#, #depositWeight#
#unit#, #length#, #width#, #thick#, #depositQty#, #depositUnitWeight#, #depositWeight#,
#storageType#, #isReturn#,#submitStatus#
)
</insert>
......@@ -199,6 +215,17 @@
<include refid="idCondition"/>
</update>
<update id="updateWhCode">
UPDATE ${hggpSchema}.HGKC001
SET
WH_CODE = #whCode#,
WH_NAME = #whName#,
UPDATED_BY = #updatedBy#,
UPDATED_NAME = #updatedName#,
UPDATED_TIME = #updatedTime#
WHERE DEPOSIT_NO = #depositNo#
</update>
<!-- 统计库存 -->
<select id="statDate" resultClass="com.baosight.hggp.hg.kc.domain.HGKC001">
SELECT
......@@ -218,4 +245,15 @@
GROUP BY COMPANY_CODE, DEP_CODE, WH_CODE, INVENT_TYPE, INVENT_CODE,SPEC_ID
</select>
<update id="updateSubmitStatus">
UPDATE ${hggpSchema}.HGKC001
SET
UPDATED_BY = #updatedBy#, <!-- 更新人 -->
UPDATED_NAME = #updatedName#, <!-- 更新人名称 -->
UPDATED_TIME = #updatedTime#, <!-- 更新时间 -->
SUBMIT_STATUS = #submitStatus# <!-- 提交状态 -->
WHERE
ID = #id#
</update>
</sqlMap>
......@@ -6,6 +6,8 @@ import com.baosight.hggp.core.constant.CommonConstant;
import com.baosight.hggp.core.dao.DaoBase;
import com.baosight.hggp.core.dao.DaoUtils;
import com.baosight.hggp.core.enums.DeleteFlagEnum;
import com.baosight.hggp.hg.cg.domain.HGCG003;
import com.baosight.hggp.hg.cg.utils.HGCGUtils;
import com.baosight.hggp.hg.constant.HGConstant;
import com.baosight.hggp.hg.constant.HGSqlConstant;
import com.baosight.hggp.hg.kc.domain.*;
......@@ -14,6 +16,7 @@ import com.baosight.hggp.hg.pz.tools.HGPZTools;
import com.baosight.hggp.hg.zl.domain.HGZL002;
import com.baosight.hggp.hg.zl.domain.HGZL004;
import com.baosight.hggp.util.AssertUtils;
import com.baosight.hggp.util.BeanUtils;
import com.baosight.hggp.util.DateUtils;
import com.baosight.hggp.util.StringUtils;
import com.baosight.iplat4j.core.ei.EiConstant;
......@@ -42,6 +45,21 @@ public class HGKCTools {
public static class HgKc001 {
/**
* 生产入库单信息
*
* @param id
* @return
*/
public static HGKC001 getId(Long id) {
AssertUtils.isEmpty(Collections.singleton(id), "采购入库单为空!");
Map<String, Object> paramMap = new HashMap();
paramMap.put("id", id);
paramMap.put("deleteFlag", 0);
List<HGKC001> list = DaoBase.getInstance().query(HGKC001.QUERY, paramMap);
AssertUtils.isEmpty(list, "采购入库单为空!");
return list.get(0);
}
/**
* 锁
*
* @param depositNos
......@@ -80,6 +98,35 @@ public class HGKCTools {
return results.stream().collect(Collectors.toMap(HGKC001::getDepositNo, item -> item));
}
/**
* 生产入库(入库质检单)
* @param receiveNo
*/
public static void putInStorageData(String receiveNo) {
List<String> receiveNoList = new LinkedList<>();
receiveNoList.add(receiveNo);
// db数据
Map<String, HGCG003> dbCg003Map = HGCGUtils.HgCg003.lockGetData(receiveNoList);
HGCG003 dbCg003 = dbCg003Map.get(receiveNo);
HGKC001 newKc001 = BeanUtils.copy(dbCg003, HGKC001.class);
newKc001.setDepositDate(DateUtils.shortDate());
newKc001.setDepositNo(SequenceGenerator.getNextSequence(HGConstant.SequenceId.CG_DEPOSIT_NO));
newKc001.setDepositQty(dbCg003.getDepositQty());
newKc001.setDepositUnitWeight(dbCg003.getReceiveUnitWeight());
newKc001.setDepositWeight(dbCg003.getDepositQty().multiply(dbCg003.getReceiveUnitWeight()));
newKc001.setDeleteFlag(DeleteFlagEnum.UN_REMOVE.getCode());
newKc001.setSpecId(dbCg003.getSpecId());
newKc001.setSubmitStatus(HGConstant.ProductStatus.WTJ);
newKc001.setStorageType(HGConstant.StorageType.RK);
newKc001.setIsReturn(CommonConstant.YesNo.NO_0);
DaoUtils.insert(HGKC001.INSERT, newKc001);
// 更新库存数量
// HGKCUtils.HgKc010.updateInv(newKc001.getCompanyCode(), newKc001.getWhCode(), newKc001.getInventCode(),
// newKc001.getDepositQty(), newKc001.getDepositUnitWeight(), newKc001.getDepositWeight());
// 更新收货单状态
// HGCGTools.HgCg003.updateStatus(receiveNo, HGConstant.CgReceiveStatus.S_5);
}
}
/**
......@@ -700,7 +747,7 @@ public class HGKCTools {
*
* @param companyCode
* @param whCode
* @param specId
* @param inventCode
* @return
*/
public static void lock(String companyCode, String whCode, String inventCode) {
......
......@@ -7,6 +7,7 @@ import com.baosight.hggp.core.dao.DaoUtils;
import com.baosight.hggp.core.enums.DeleteFlagEnum;
import com.baosight.hggp.hg.cg.tools.HGCGTools;
import com.baosight.hggp.hg.constant.HGSqlConstant;
import com.baosight.hggp.hg.kc.tools.HGKCTools;
import com.baosight.hggp.hg.zl.domain.HGZL001;
import com.baosight.hggp.hg.zl.utils.HGZLUtils;
import com.baosight.hggp.util.AssertUtils;
......@@ -27,7 +28,7 @@ import java.util.Map;
* @date 2024年01月09日 10:18
*/
public class ServiceHGZL001 extends ServiceBase {
/**
* 画面初始化
*
......@@ -47,7 +48,7 @@ public class ServiceHGZL001 extends ServiceBase {
}
return inInfo;
}
/**
* 查询操作
*
......@@ -66,7 +67,7 @@ public class ServiceHGZL001 extends ServiceBase {
}
return inInfo;
}
/**
* 新增操作
*
......@@ -98,7 +99,7 @@ public class ServiceHGZL001 extends ServiceBase {
}
return inInfo;
}
/**
* 修改操作
*
......@@ -128,7 +129,7 @@ public class ServiceHGZL001 extends ServiceBase {
}
return inInfo;
}
/**
* 设置基础信息
*
......@@ -147,7 +148,7 @@ public class ServiceHGZL001 extends ServiceBase {
// fZl001.setCheckUser(UserSession.getLoginName());
// fZl001.setCheckUserName(UserSession.getLoginCName());
}
/**
* 删除操作
*
......@@ -175,7 +176,7 @@ public class ServiceHGZL001 extends ServiceBase {
}
return inInfo;
}
/**
* 已处理
*
......@@ -199,7 +200,7 @@ public class ServiceHGZL001 extends ServiceBase {
}
return inInfo;
}
/**
* 校验数据
*
......@@ -216,7 +217,7 @@ public class ServiceHGZL001 extends ServiceBase {
String.format("质检单[%s]的合格数量加不合格数量必须等于收货数量", checkNo));
}
}
/**
* 保存数据
*
......@@ -233,7 +234,9 @@ public class ServiceHGZL001 extends ServiceBase {
DaoUtils.update(HGSqlConstant.HgZl001.PROCESS, dbZl001);
// 更新收货单状态
HGCGTools.HgCg003.updateCheck(dbZl001);
//生成采购入库单
HGKCTools.HgKc001.putInStorageData(dbZl001.getReceiveNo());
}
}
}
......@@ -7,7 +7,28 @@ $(function () {
pageSize: 20,
pageSizes: [20, 50, 70, 100],
},
columns: [],
columns: [
{
field: "operator",
title: "操作",
template: function (item) {
let status = item.submitStatus;
let isReturn = item.isReturn;
let template = '';
if (item.id){
if (status == 0) {
template += '<a style="cursor: pointer;display: inline-flex;justify-content: center;margin:auto 5px" '
+ 'onclick="updateSubmitStatus(' + item.id + ')" >提交</a>';
}
// if (status == 1 && isReturn == 0) {
// template += '<a style="cursor: pointer;display: inline-flex;justify-content: center;margin:auto 5px" '
// + 'onclick="sendBack(' + item.id + ')" >退回</a>';
// }
}
return template;
}
}
],
loadComplete: function (grid) {
// 确认
$("#CONFIRM").on("click", confirm);
......@@ -133,3 +154,40 @@ let selectReceiveCallback = function () {
// 关闭弹窗
JSColorbox.close();
}
/**
* 提交
* @param id
* @param status
*/
function updateSubmitStatus(id) {
let inEiInfo = new EiInfo();
inEiInfo.set("result-0-id", id);
JSUtils.confirm("确定提交此采购入库单吗? ", {
ok: function () {
EiCommunicator.send('HGKC001', 'updateSubmitStatus', inEiInfo, {
onSuccess: function (ei) {
if (ei.getStatus() >= 0) {
try {
query();
} catch (e) {
}
if (ei.getStatus() == 0) {
NotificationUtil(ei, 'warning');
} else {
NotificationUtil(ei);
}
} else {
NotificationUtil(ei, "error");
}
},
onFail: function (ei) {
// 发生异常
NotificationUtil("操作失败,原因[" + ei + "]", "error");
}
}
);
}
});
}
......@@ -46,13 +46,14 @@
<EF:EFRegion id="result" title="明细信息">
<EF:EFGrid blockId="result" autoDraw="override" isFloat="true" checkMode="row">
<EF:EFColumn ename="id" cname="内码" hidden="true"/>
<EF:EFColumn ename="operator" cname="操作" locked="true" width="80" enable="false" align="center" readonly="false"/>
<EF:EFColumn ename="companyCode" cname="公司编码" enable="false" width="100" align="center" hidden="true"/>
<EF:EFColumn ename="companyName" cname="公司名称" enable="false" width="130" align="center"/>
<EF:EFColumn ename="depositDate" cname="入库日期" enable="false" width="100" align="center" editType="date"
dateFormat="yyyy-MM-dd" parseFormats="['yyyyMMdd']"/>
<EF:EFColumn ename="depositNo" cname="入库单号" enable="false" width="120" align="center"/>
<EF:EFColumn ename="receiveNo" cname="收货单号" enable="false" width="120" align="center"/>
<EF:EFComboColumn ename="whCode" cname="仓库名称" enable="false" width="120" align="left" defaultValue=""
<EF:EFComboColumn ename="whCode" cname="仓库名称" enable="true" width="120" align="left" defaultValue=""
filter="contains" required="true">
<EF:EFOptions blockId="wh_record_block_id" valueField="valueField" textField="textField"/>
</EF:EFComboColumn>
......@@ -71,6 +72,9 @@
<EF:EFColumn ename="createdName" cname="创建人" enable="false" width="100" align="center"/>
<EF:EFColumn ename="createdTime" cname="创建时间" enable="false" width="140" align="center"
editType="datetime" parseFormats="['yyyyMMddHHmmss']"/>
<EF:EFComboColumn cname="提交状态" ename="submitStatus" width="90" align="center" required="false">
<EF:EFCodeOption codeName="hggp.sc.productStatus" />
</EF:EFComboColumn>
</EF:EFGrid>
</EF:EFRegion>
<EF:EFRegion title="提示">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment