杨万里 2 months ago
commit 754833b734

@ -152,6 +152,10 @@ public interface RemoteSapService {
public R ObtainSapInventory(@RequestBody(required = false) SapZmesGetMchb sapZmesGetMchb);
@PostMapping("/sap/sapZmesAnlaGet")
public R sapZmesAnlaGet(@RequestBody(required = false) Map paramMap);
@PostMapping("/sap/handMadeInStorage")
public R handMadeInStorage(@RequestBody List<SapHandMadeInStorage> list);
}

@ -0,0 +1,91 @@
package com.op.system.api.domain.sap;
/**
* remark
*
* @author 019117
* @date
*/
public class SapHandMadeInStorage {
/**
*
*/
private String materialDesc;
/**
*
*/
private String materialCode;
/** 批次号 **/
private String batchCode;
/** 工厂号 **/
private String factoryNo;
/** 仓库 **/
private String warehouse;
/** 创建人 **/
private String createBy;
/** 创建时间 yyyymmdd **/
private String createTime;
public String getMaterialDesc() {
return materialDesc;
}
public void setMaterialDesc(String materialDesc) {
this.materialDesc = materialDesc;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getBatchCode() {
return batchCode;
}
public void setBatchCode(String batchCode) {
this.batchCode = batchCode;
}
public String getFactoryNo() {
return factoryNo;
}
public void setFactoryNo(String factoryNo) {
this.factoryNo = factoryNo;
}
public String getWarehouse() {
return warehouse;
}
public void setWarehouse(String warehouse) {
this.warehouse = warehouse;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
}

@ -188,6 +188,11 @@ public class RemoteSapFallbackFactory implements FallbackFactory<RemoteSapServic
return R.fail("sap库存同步定时任务失败" + throwable.getMessage());
}
@Override
public R handMadeInStorage(List<SapHandMadeInStorage> list) {
return R.fail("手持成品物料收货入库失败" + throwable.getMessage());
}
};
}
}

@ -36,6 +36,12 @@ public class EquSparepartsInOut extends BaseEntity {
@Excel(name = "数量")
private BigDecimal amount;
@Excel(name = "单价")
private BigDecimal unitPrice;
@Excel(name = "总价")
private BigDecimal allPrice;
@Excel(name = "备用1")
private String attr1;
@ -180,6 +186,22 @@ public class EquSparepartsInOut extends BaseEntity {
return storageId;
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
this.unitPrice = unitPrice;
}
public BigDecimal getAllPrice() {
return allPrice;
}
public void setAllPrice(BigDecimal allPrice) {
this.allPrice = allPrice;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

@ -22,6 +22,8 @@
<result property="delFlag" column="del_flag"/>
<result property="factoryCode" column="factory_code"/>
<result property="nickName" column="nick_name" />
<result property="unitPrice" column="unit_price"/>
<result property="allPrice" column="allPrice"/>
</resultMap>
<sql id="selectEquSparepartsInOutVo">
@ -30,26 +32,28 @@
<select id="selectEquSparepartsInOutList" parameterType="EquSparepartsInOut" resultMap="EquSparepartsInOutResult">
SELECT
id,
in_out_type,
order_no,
spare_code,
spare_name,
amount,
attr1,
attr2,
attr3,
esio.create_by,
esio.create_time,
esio.update_by,
esio.update_time,
esio.del_flag,
factory_code,
storage_id,
su.nick_name
FROM
equ_spareparts_in_out esio
esio.id,
esio.in_out_type,
esio.order_no,
esio.spare_code,
esio.spare_name,
esio.amount,
esio.attr1,
esio.attr2,
esio.attr3,
esio.create_by,
esio.create_time,
esio.update_by,
esio.update_time,
esio.del_flag,
esio.factory_code,
esio.storage_id,
su.nick_name,
esl.unit_price,
(esl.unit_price * esio.amount) allPrice
FROM equ_spareparts_in_out esio
LEFT JOIN lanju_op_cloud.dbo.sys_user su ON esio.create_by = su.user_name
LEFT JOIN equ_spareparts_ledger esl ON esio.spare_code = esl.material_code AND esl.del_flag = 0
<where>
<if test="inOutType != null and inOutType != ''">and in_out_type = #{inOutType}</if>
<if test="orderNo != null and orderNo != ''">and order_no = #{orderNo}</if>

@ -144,6 +144,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test='isLow == "1"'>and TRY_CAST(safe_stock AS DECIMAL(18,2)) &lt;= amount</if>
and del_flag = '0'
</where>
ORDER BY
CASE WHEN TRY_CONVERT(numeric(18,2), safe_stock) > amount THEN 0 ELSE 1 END,
gmt_modified DESC,
gmt_create DESC
</select>
<select id="selectSparePartsLedgerByStorageId" parameterType="String" resultMap="SparePartsLedgerResult">

@ -1315,6 +1315,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
while(pall.compareTo(BigDecimal.ZERO)>0){
pw = new ProOrderWorkorder();
pw.setProductCode(pow.getProductCode());
pw.setProductName(pow.getProductName());
pw.setWorkorderCode(pow.getWorkorderCode());
pw.setBatchCode(pow.getBatchCode());
@ -1328,13 +1329,9 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
pw.setUnit(pow.getUnit());
pw.setUmrez(pw.getBatchQuantity().multiply(pow.getUmrez()));//子单数量
pw.setPalletNo(i++);
//批次+板号+物料+工单号
pw.setPalletCode(
pow.getBatchCode() + "-"
+ pw.getPalletNo() + "-"
+ pow.getProductCode().replace("0000000","") + "-"
+ pow.getWorkorderCode().replace("000","")
);//workorderCode 实际上是订单号
//托盘号:工单+板号
pw.setPalletCode(trimZero(pow.getWorkorderCode()) + "-" + pw.getPalletNo());
//workorderCode 实际上是订单号
pw.setCreateTime(nowDate);
pw.setCreateBy(SecurityUtils.getUsername());
pw.setAddFlag("0");//增打标志
@ -1359,14 +1356,12 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
List<ProOrderWorkorder> dtos1 = proOrderWorkorderMapper.getPreIdCardList(proOrderWorkorder);
ProOrderWorkorder pow = dtos1.get(0);
proOrderWorkorder.setPalletNo(palletNo);
//批次+板号+物料+工单
//托盘号:工单+板
// String uniqueBarCode = pow.getProductCode().replace("0000000","") + "-" +
// pow.getWorkorderCode() + "-" + proOrderWorkorder.getBatchCode() + "-" + palletNo;//订单号+批次+板次 唯一二维码标识
String uniqueBarCode = proOrderWorkorder.getBatchCode() + "-"
+ palletNo + "-"
+ pow.getProductCode().replace("0000000","") + "-"
+ pow.getWorkorderCode().replace("000","");
String uniqueBarCode = trimZero(pow.getWorkorderCode()) + "-" + palletNo;
ProOrderWorkorder pw = new ProOrderWorkorder();
pw.setProductCode(pow.getProductCode());//产品编码
pw.setProductName(pow.getProductName());//产品名
pw.setWorkorderCode(pow.getWorkorderCode());//工单号 实际是订单号
pw.setBatchCode(proOrderWorkorder.getBatchCode());//批次号
@ -1408,6 +1403,14 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
return dtos;
}
//剔除字符串前面的0
public String trimZero(String str){
if(str == null || str.isEmpty()){
throw new RuntimeException("工单号为空");
}
return str.replaceFirst("^0+", "");
}
@Override
@DS("#header.poolName")
public List<ProOrderWorkorder> getIdCardListRefresh(ProOrderWorkorder proOrderWorkorder) {

@ -643,4 +643,13 @@ public class SapController extends BaseController {
public R ObtainSapInventory(@RequestBody(required = false) SapZmesGetMchb sapZmesGetMchb) {
return sapItemSyncService.ObtainSapInventory(sapZmesGetMchb);
}
/**
*
* **/
@PostMapping("/handMadeInStorage")
@Log(title = "手持成品物料收货入库", businessType = BusinessType.SAP)
public R handMadeInStorage(@RequestBody List<SapHandMadeInStorage> list) {
return sapOrderService.handMadeInStorage(list);
}
}

@ -60,4 +60,6 @@ public interface SapOrderService {
R sapPOrderGoodsReceipt(List<Map<String, Object>> mapList);
R shopOrderBomUpdate(List<Map<String, Object>> mapList);
R handMadeInStorage(List<SapHandMadeInStorage> list);
}

@ -10,13 +10,9 @@ import com.op.common.core.utils.StringUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.sap.domain.vo.SapOrderReceiptQuery;
import com.op.system.api.domain.sap.SapPurchaseOrderQuery;
import com.op.system.api.domain.sap.*;
import com.op.sap.service.SapOrderService;
import com.op.system.api.domain.sap.SapCloseOrderQuery;
import com.op.system.api.domain.sap.SapCreateOrder;
import com.op.system.api.domain.sap.SapRFW;
import com.op.system.api.domain.sap.SapShopOrderQuery;
import com.op.system.api.model.SapProOrder;
import com.sap.conn.jco.*;
@ -685,6 +681,62 @@ public class SapOrderServiceImpl implements SapOrderService {
return R.ok(successMsg);
}
//手持成品物料收货入库
@Override
public R<?> handMadeInStorage(List<SapHandMadeInStorage> list) {
String msg = null;
try {
log.info("手持成品物料收货入库-----" + JSONObject.toJSONString(list));
JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZMB_MODIFY_ZMMKW");
if (func == null) {
throw new RuntimeException("Function does not exist in SAP");
}
if (!list.isEmpty()) {
func.getImportParameterList().setValue("P_WRITE", "X");
JCoTable table = func.getTableParameterList().getTable("IN_ZMMKW");
for (SapHandMadeInStorage item : list) {
table.appendRow();
//物料编码
table.setValue("MATNR", item.getMaterialCode());
//物料描述
table.setValue("MAKTX", item.getMaterialCode());
//批次
table.setValue("CHARG", item.getBatchCode());
//工厂
table.setValue("WERKS", item.getFactoryNo());
//区位
table.setValue("ABLAD", item.getWarehouse());
//状态
table.setValue("ZTYPE", "1");
//修改人
table.setValue("ZNAME", item.getCreateBy());
//修改日期
table.setValue("ZMDDAT", item.getCreateTime());
}
func.execute(dest);
msg = func.getExportParameterList().getString("RETMSG");
String code = func.getExportParameterList().getString("RETCODE");
return R.ok();
} else {
log.error("接收的数据为空");
return R.fail("接收的数据为空");
}
} catch (Exception e) {
log.error(msg + e.getMessage());
return R.fail(msg);
}
}
}

@ -11,9 +11,11 @@ import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.StringUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.system.api.RemoteQualityService;
import com.op.system.api.domain.sap.SapHandMadeInStorage;
import com.op.system.api.domain.wms.wmsReportWork;
import com.op.system.api.RemoteSapService;
import com.op.wms.domain.*;
@ -1253,9 +1255,21 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService {
String formattedDate = dateFormat.format(date);//批次
List<WmsProductPut> wmsProductPutList = wmsProductPut.getWmsProductPut();//前端下栏保存的数据
//用于写入sap
List<SapHandMadeInStorage> sapHandMadeInStorageList = new ArrayList<>();
String SUCCESS = "操作成功";
for (WmsProductPut wmsProductPut1 :
wmsProductPutList) {
for (WmsProductPut wmsProductPut1 : wmsProductPutList) {
SapHandMadeInStorage sapHandMadeInStorage = new SapHandMadeInStorage();
sapHandMadeInStorage.setMaterialDesc(wmsProductPut1.getProductName());
sapHandMadeInStorage.setMaterialCode(wmsProductPut1.getProductCode());
sapHandMadeInStorage.setBatchCode(getBatchCode(wmsProductPut1.getBatchNumber()));
sapHandMadeInStorage.setWarehouse(wmsProductPut1.getWaCode());
sapHandMadeInStorage.setFactoryNo(wmsProductPut.getFactoryCode());
sapHandMadeInStorage.setCreateTime(DateUtils.parseDateToStr("yyyyMMdd", new Date()));
sapHandMadeInStorage.setCreateBy(wmsProductPut.getCreateBy());
sapHandMadeInStorageList.add(sapHandMadeInStorage);
//根据下面的记录--先查询对应订单,如果有原来的订单的话,就在原来的订单上进行修改,如果没有就先插入,如果有就修改数量
WmsProductPut wmsProductPutk = new WmsProductPut();
//wms_product_put
@ -1368,6 +1382,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService {
//
wmsProductPutMapper.updateProOrderWorkorderBatchPallet(wmsProductPut1.getSn());
}
remoteSapService.handMadeInStorage(sapHandMadeInStorageList);
return SUCCESS;
}finally {
DynamicDataSourceContextHolder.poll();
@ -1375,6 +1390,25 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService {
}
/** 获取批次号 **/
private String getBatchCode(String str){
String batchCode = "";
if (StringUtils.isBlank(str)){
throw new RuntimeException("批次号为空!");
}
if (str.length() == 24){
//截取12位到22位
batchCode = str.substring(12,22);
}else {
batchCode = str;
}
return batchCode;
}
@Override
public List<WmsSellOutEmbryo> selectQueryFinishedProductSalesTS(WmsSellOutEmbryo wmsSellOutEmbryo) {
//wms_sell_out_embryo

Loading…
Cancel
Save