补单问题,pda单据提交

master
anthonywj 2 years ago
parent c2c18bb715
commit ac32ef672d

@ -61,7 +61,7 @@ public class UdiRelevanceController {
@Resource
UdiRlSupService udiRlSupService;
//手持终端下载UDI产品信息
@AuthRuleAnnotation("")
@GetMapping("/udi/udirel/download")
public BaseResponse downloadProducts(FilterUdiRelRequest filterUdiRelRequest,

@ -112,7 +112,7 @@ public class IoCodeTempController extends BaseController {
List<PostOrderRequest.PostOrder> postOrders = postOrderRequest.getPostOrders();
if (postOrders != null && postOrders.size() > 0) {
for (PostOrderRequest.PostOrder postOrder : postOrders) {
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(postOrder.getCodes().get(0).getAction());
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(postOrder.getOrderBean().getType());
if (bussinessTypeEntity.isOutToSpms()) {
outPostOrders.add(postOrder);
} else {

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.ConstantStatus;
@ -14,19 +15,25 @@ import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.req.inout.AddOrderRequest;
import com.glxp.api.req.inout.FilterOrderDetailBizRequest;
import com.glxp.api.req.inout.FilterOrderRequest;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
import com.glxp.api.res.inout.IoOrderResponse;
import com.glxp.api.res.inout.PdaBusOrderResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inout.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -75,7 +82,7 @@ public class IoOrderController extends BaseController {
}
//草稿保存
//处理单据提交,草稿保存
@AuthRuleAnnotation("")
@PostMapping("warehouse/inout/saveOrderWeb")
public BaseResponse saveOrderWeb(@RequestBody AddOrderRequest addOrderRequest) {
@ -208,5 +215,37 @@ public class IoOrderController extends BaseController {
}
//手持终端获取未处理业务单据进行校验
@AuthRuleAnnotation("")
@GetMapping("/udiwms/erpOrder/filter")
public BaseResponse filterErpOrder(FilterOrderRequest filterOrderRequest,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
if (StrUtil.isEmpty(filterOrderRequest.getAction()))
return ResultVOUtils.error(500, "单据类型不能为空!");
List<IoOrderResponse> orderResponses = orderService.filterList(filterOrderRequest);
List<PdaBusOrderResponse> erpOrderResponses = new ArrayList<>();
if (CollUtil.isNotEmpty(orderResponses)) {
for (IoOrderResponse orderResponse : orderResponses) {
PdaBusOrderResponse pdaBusOrderResponse = new PdaBusOrderResponse();
pdaBusOrderResponse.setOrderResponse(orderResponse);
FilterOrderDetailBizRequest filterOrderDetailBizRequest = new FilterOrderDetailBizRequest();
filterOrderDetailBizRequest.setOrderIdFk(orderResponse.getBillNo());
List<IoOrderDetailBizResponse> orderDetailBizEntities = orderDetailBizService.filterList(filterOrderDetailBizRequest);
pdaBusOrderResponse.setOrderDetailBizResponses(orderDetailBizEntities);
}
}
PageInfo<IoOrderResponse> pageInfo;
pageInfo = new PageInfo<>(orderResponses);
PageSimpleResponse<PdaBusOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(erpOrderResponses);
return ResultVOUtils.success(pageSimpleResponse);
// }
}
}

@ -0,0 +1,45 @@
package com.glxp.api.entity.inout;
import lombok.Data;
@Data
public class PdaCodeEntity {
private String code; //药监码
private String order; //订单号
private String type; //业务类型
private String Actor;
private String ActDate;
private String FromCorpID;
private String inout;
//新增字段
private String batchNo;
private String produceDate;
private String expireDate;
private String serialNo;
private String udi;
private Integer count; //码数量
private String thirdProductNo;
private Integer sCount; //扫码实际数量
private String supId;
private Long relId;
public String getSupId() {
if (supId == null) {
return null;
} else if (supId.equals(""))
return null;
return supId;
}
public Integer getCount() {
if (count == null) {
return 1;
}
if (count == 0)
return 1;
return count;
}
}

@ -0,0 +1,23 @@
package com.glxp.api.entity.inout;
import lombok.Data;
@Data
public class PdaOrderEntity {
private String exportStatus; //导出状态
private String type; //业务类型
private String order; //单号
private String inout;
private String FromCorpID;
private String fromCorp;
private int version;
private String docid;
private String stockCheckFk;
private String supId;
private String fromDeptCode;
private String fromInvCode;
private String deptCode;
private String invCode;
}

@ -1,60 +0,0 @@
package com.glxp.api.req.inout;
import lombok.Data;
@Data
public class PdaCodeEntity {
private Long id;
private String action;
private String mainAction;
private String code;
private String corpOrderId;
private String actor;
private String actDate;
private String fromCorpId;
private String fromCorp;
private String orderId;
private String batchNo;
private String produceDate;
private String expireDate;
private String serialNo;
private Integer count; //扫码数量
private Integer reCount; //实际数量
private String packageLevel;
private String warehouseCode;
private String customerId;
private String nameCode;
private Integer sCount;
private String supId;//供应商ID
private String supName;
private String invStorageCode;
private String invWarehouseCode;
private String relId;
private Integer status;
private String locStorageCode;
private String fromSubInvCode;
private String mySupId;
private int scanCount;
public String getSupId() {
if (supId == null) {
return null;
} else if (supId.equals(""))
return null;
return supId;
}
public Integer getCount() {
if (count == null) {
return 1;
}
if (count == 0)
return 1;
return count;
}
}

@ -1,5 +1,7 @@
package com.glxp.api.req.inout;
import com.glxp.api.entity.inout.PdaCodeEntity;
import com.glxp.api.entity.inout.PdaOrderEntity;
import lombok.Data;
import java.util.List;
@ -32,12 +34,14 @@ public class PostOrderRequest {
}
public static class PostOrder {
private String bizOrderId;
public List<String> erpOrders;
List<PdaCodeEntity> codes;
private String billType;
private String orderId;
private boolean outChangeEnable;
private boolean preCheck;
PdaOrderEntity orderBean;
public String getStockIdFk() {
return stockIdFk;
@ -96,6 +100,22 @@ public class PostOrderRequest {
public void setPreCheck(boolean preCheck) {
this.preCheck = preCheck;
}
public PdaOrderEntity getOrderBean() {
return orderBean;
}
public void setOrderBean(PdaOrderEntity orderBean) {
this.orderBean = orderBean;
}
public String getBizOrderId() {
return bizOrderId;
}
public void setBizOrderId(String bizOrderId) {
this.bizOrderId = bizOrderId;
}
}
}

@ -91,6 +91,9 @@ public class UdiRelevanceResponse {
private String unitFk; //供应商ID
private String companyName; //供应商名称
//手持终端下载需要主键
private Long relId;
public int getBhzxxsbzsl() {
if (bhzxxsbzsl == null || bhzxxsbzsl == 0) {
return 1;

@ -0,0 +1,13 @@
package com.glxp.api.res.inout;
import lombok.Data;
import java.util.List;
@Data
public class PdaBusOrderResponse {
IoOrderResponse orderResponse;
private List<IoOrderDetailBizResponse> orderDetailBizResponses;
}

@ -12,14 +12,11 @@ import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.basic.BasicCorpEntity;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.basic.UdiRlSupEntity;
import com.glxp.api.entity.inout.IoCodeEntity;
import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.entity.system.SystemParamConfigEntity;
import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest;
import com.glxp.api.req.inout.PdaCodeEntity;
import com.glxp.api.entity.inout.PdaCodeEntity;
import com.glxp.api.req.inout.PostOrderRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.service.basic.BasicCorpService;
@ -33,6 +30,7 @@ import com.glxp.api.util.DateUtil;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.OrderNoTypeBean;
import com.glxp.api.util.udi.FilterUdiUtils;
import com.glxp.api.util.udi.UdiCalCountUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -314,56 +312,69 @@ public class IoAddInoutService {
return ResultVOUtils.success();
}
//手持终端上传生成扫码单据
public void creatOrderByPda(PostOrderRequest postOrderRequest) {
List<PostOrderRequest.PostOrder> postOrders = postOrderRequest.getPostOrders();
if (postOrders != null && postOrders.size() > 0) {
for (int i = 0; i < postOrders.size(); i++) {
PostOrderRequest.PostOrder postOrder = postOrders.get(i);
List<PdaCodeEntity> pdaCodeEntities = postOrder.getCodes();
if (pdaCodeEntities != null && pdaCodeEntities.size() > 0) {
//创建单据
PdaCodeEntity pdaCodeEntity = pdaCodeEntities.get(0);
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(pdaCodeEntity.getAction());
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trim(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
PdaOrderEntity pdaOrderEntity = postOrder.getOrderBean();
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(pdaOrderEntity.getType());
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
IoOrderEntity orderSaveRequest = new IoOrderEntity();
orderSaveRequest.setBillNo(orderNo);
if (pdaCodeEntity.getActDate() != null) {
orderSaveRequest.setCreateTime(DateUtil.parseDate(pdaCodeEntity.getActDate()));
}
orderSaveRequest.setMainAction(pdaCodeEntity.getMainAction());
orderSaveRequest.setAction(pdaCodeEntity.getAction());
orderSaveRequest.setCorpOrderId(pdaCodeEntity.getCorpOrderId());
orderSaveRequest.setFromCorp(pdaCodeEntity.getFromCorpId());
orderSaveRequest.setOutChangeEnable(postOrder.isOutChangeEnable());
orderSaveRequest.setMainAction(pdaOrderEntity.getInout());
orderSaveRequest.setAction(pdaOrderEntity.getType());
orderSaveRequest.setCorpOrderId(pdaOrderEntity.getOrder());
orderSaveRequest.setFromCorp(pdaOrderEntity.getFromCorpID());
orderSaveRequest.setCustomerId(postOrderRequest.getCustomerId());
orderSaveRequest.setFromInvCode(pdaCodeEntity.getFromSubInvCode());
orderSaveRequest.setFromDeptCode(pdaOrderEntity.getFromDeptCode());
orderSaveRequest.setFromInvCode(pdaOrderEntity.getFromInvCode());
orderSaveRequest.setDeptCode(pdaOrderEntity.getDeptCode());
orderSaveRequest.setInvCode(pdaOrderEntity.getInvCode());
orderSaveRequest.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
orderSaveRequest.setDealStatus(ConstantStatus.ORDER_DEAL_POST);
orderSaveRequest.setCreateUser(postOrderRequest.getUserId() + "");
orderSaveRequest.setUpdateUser(postOrderRequest.getUserId() + "");
orderSaveRequest.setUpdateTime(new Date());
orderSaveRequest.setOrderType(ConstantStatus.ORDER_TYPE_SCAN);
if (postOrder.getErpOrders() != null && postOrder.getErpOrders().size() > 0)
orderSaveRequest.setFromType(ConstantStatus.FROM_PDAED);
else
orderSaveRequest.setFromType(ConstantStatus.FROM_PDAUN);
orderService.insertOrder(orderSaveRequest);
List<PdaCodeEntity> pdaCodeEntities = postOrder.getCodes();
if (pdaCodeEntities != null && pdaCodeEntities.size() > 0) {
PdaCodeEntity pdaCodeEntity = pdaCodeEntities.get(0);
if (pdaCodeEntity.getActDate() != null) {
orderSaveRequest.setCreateTime(DateUtil.parseDate(pdaCodeEntity.getActDate()));
}
//写入条码
List<IoCodeEntity> ioCodeEnttities = new ArrayList<>();
List<IoCodeTempEntity> ioCodeEnttities = new ArrayList<>();
for (int index = 0; index < pdaCodeEntities.size(); index++) {
pdaCodeEntities.get(index).setOrderId(orderNo);
IoCodeEntity codeEnttity = new IoCodeEntity();
IoCodeTempEntity codeEnttity = new IoCodeTempEntity();
BeanUtils.copyProperties(pdaCodeEntities.get(index), codeEnttity);
codeEnttity.setAction(orderSaveRequest.getAction());
codeEnttity.setMainAction(orderSaveRequest.getMainAction());
codeEnttity.setDeptCode(orderSaveRequest.getDeptCode());
codeEnttity.setInvCode(orderSaveRequest.getInvCode());
codeEnttity.setReCount(codeEnttity.getCount() * udiCalCountUtil.getActCount(codeEnttity.getRelId()));
codeEnttity.setUpdateTime(new Date());
codeEnttity.setCreateTime(DateUtil.parseDate(pdaCodeEntity.getActDate()));
ioCodeEnttities.add(codeEnttity);
}
codeService.insertBatch(ioCodeEnttities);
codeTempService.insertBatch(ioCodeEnttities);
}
orderService.insertOrder(orderSaveRequest);
}
}
}
@Resource
UdiCalCountUtil udiCalCountUtil;
//校验条码关联供应商
public String checkExitSup(Long relId) {
FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest = new FilterCompanyProductRelevanceRequest();

@ -225,7 +225,10 @@ public class IoGenInvService {
BeanUtils.copyProperties(orderEntity, outOrder);
outOrder.setId(null);
outOrder.setSupplementNo(null);//补单需置空
if (bussinessChangeTypeEntity.getBeforeTime() != null)
outOrder.setCreateTime(DateUtil.getBeforeDay(DateUtil.fromDate(orderEntity), bussinessChangeTypeEntity.getBeforeTime()));
else
outOrder.setCreateTime(DateUtil.fromDate(orderEntity));
outOrder.setAction(targetBustypeEntity.getAction());
outOrder.setMainAction(targetBustypeEntity.getMainAction());

@ -5,6 +5,7 @@
<select id="filterUdiRelevance" parameterType="com.glxp.api.req.basic.FilterUdiRelRequest"
resultType="com.glxp.api.res.basic.UdiRelevanceResponse">
select basic_udirel.*,
basic_udirel.id relId,
basic_products.originUuid,
basic_products.nameCode,
basic_products.deviceRecordKey,
@ -96,7 +97,8 @@
</if>
<if test="lastUpdateTime != null and lastUpdateTime != ''">
<![CDATA[
and DATE_FORMAT(updateTime, '%Y-%m-%d %H:%i:%S') >= DATE_FORMAT(#{lastUpdateTime}, '%Y-%m-%d %H:%i:%S')
and DATE_FORMAT(basic_udirel.updateTime, '%Y-%m-%d %H:%i:%S') >=
DATE_FORMAT(#{lastUpdateTime}, '%Y-%m-%d %H:%i:%S')
]]>
</if>
<if test="mainId != '' and mainId != null">
@ -569,11 +571,9 @@
replace
INTO basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, isLock,
lockStatus,isAdavence,useMuti,useNum,supName,createTime,updateTime,modifyTime,createUser,updateUser,remark
)
values
(
#{id},
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, updateUser,
remark)
values (#{id},
#{uuid},
#{mainId},
#{thirdId},
@ -595,8 +595,7 @@
#{modifyTime},
#{createUser},
#{updateUser},
#{remark}
)
#{remark})
</insert>
<insert id="insertUdiRelevanceignore" keyProperty="id"
@ -605,11 +604,9 @@
ignore
INTO basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, isLock,
lockStatus,isAdavence,useMuti,useNum,supName,createTime,updateTime,modifyTime,createUser,updateUser,remark
)
values
(
#{id},
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, updateUser,
remark)
values (#{id},
#{uuid},
#{mainId},
#{thirdId},
@ -631,8 +628,7 @@
#{modifyTime},
#{createUser},
#{updateUser},
#{remark}
)
#{remark})
</insert>
<delete id="deleteById" parameterType="Map">
@ -748,17 +744,11 @@
replace
into basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, isLock,
lockStatus,isAdavence,useMuti,useNum,supName,createTime,updateTime,modifyTime,createUser,updateUser,remark
)
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, updateUser,
remark)
values
<foreach collection="udiRelevanceEntities" item="item" index="index" separator=",">
({item.id},
{item.uuid},

Loading…
Cancel
Save