1、增减项管理

2、增减项各年份值设置
3、单价审批
dev
wuwenxiong 2021-12-23 17:25:19 +08:00
parent d797198c53
commit 6ee2bb1cdc
36 changed files with 2605 additions and 109 deletions

View File

@ -18,6 +18,7 @@ import java.util.List;
* 501 退
* 502
* 503 退
* 504
*/
public enum RoleEnum {
DEVOPS(99),
@ -34,6 +35,7 @@ public enum RoleEnum {
TREASURER(501),
PRESIDENTVIEW(502),
FINANCEMANAGER(503),
COMPANYMANAGER(504),
CHAISHA(600);

View File

@ -0,0 +1,14 @@
package com.cowr.model;
import com.cowr.model.base.BaseAddSubtractItem;
/**
* Generated by COWR Tue Dec 07 16:33:48 CST 2021
* TableName: add_subtract_item
* Remarks:
* PrimaryKey: id
*/
@SuppressWarnings("serial")
public class AddSubtractItem extends BaseAddSubtractItem<AddSubtractItem> {
public static final AddSubtractItem dao = new AddSubtractItem().dao();
}

View File

@ -0,0 +1,14 @@
package com.cowr.model;
import com.cowr.model.base.BaseAddSubtractItemRecord;
/**
* Generated by COWR Tue Dec 07 16:33:48 CST 2021
* TableName: add_subtract_item_record
* Remarks:
* PrimaryKey: id
*/
@SuppressWarnings("serial")
public class AddSubtractItemRecord extends BaseAddSubtractItemRecord<AddSubtractItemRecord> {
public static final AddSubtractItemRecord dao = new AddSubtractItemRecord().dao();
}

View File

@ -0,0 +1,14 @@
package com.cowr.model;
import com.cowr.model.base.BaseProductPriceModify;
/**
* Generated by COWR Tue Dec 07 16:33:48 CST 2021
* TableName: product_price_modify
* Remarks:
* PrimaryKey: id
*/
@SuppressWarnings("serial")
public class ProductPriceModify extends BaseProductPriceModify<ProductPriceModify> {
public static final ProductPriceModify dao = new ProductPriceModify().dao();
}

View File

@ -0,0 +1,14 @@
package com.cowr.model;
import com.cowr.model.base.BaseProductPriceModifyLog;
/**
* Generated by COWR Tue Dec 07 16:33:48 CST 2021
* TableName: product_price_modify_log
* Remarks:
* PrimaryKey: id
*/
@SuppressWarnings("serial")
public class ProductPriceModifyLog extends BaseProductPriceModifyLog<ProductPriceModifyLog> {
public static final ProductPriceModifyLog dao = new ProductPriceModifyLog().dao();
}

View File

@ -88,7 +88,10 @@ public class _MappingKit {
arp.addMapping("customer_contract_signed_log", "id", CustomerContractSignedLog.class);
arp.addMapping("customer_contract_template", "id", CustomerContractTemplate.class);
arp.addMapping("add_subtract_item", "id", AddSubtractItem.class);
arp.addMapping("add_subtract_item_record", "id", AddSubtractItemRecord.class);
arp.addMapping("product_price_modify", "id", ProductPriceModify.class);
arp.addMapping("product_price_modify_log", "id", ProductPriceModifyLog.class);
arp.addMapping("presell_order", "id", PresellOrder.class);
arp.addMapping("presell_pug", "id", PresellPug.class);
}

View File

@ -0,0 +1,134 @@
package com.cowr.model.base;
import com.cowr.common.base.BaseModel;
import com.jfinal.plugin.activerecord.IBean;
import com.alibaba.fastjson.annotation.JSONField;
/**
* Generated by COWR Tue Dec 07 16:33:48 CST 2021
* TableName: add_subtract_item
* Remarks:
* PrimaryKey: id
*/
@SuppressWarnings("serial")
public abstract class BaseAddSubtractItem<M extends BaseAddSubtractItem<M>> extends BaseModel<M> implements IBean {
public static final String tablename = "add_subtract_item";
@JSONField(serialize=false)
public String getTablename(){
return tablename;
}
/**
* name: id
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: YES
* defaultValue:
* @param id
*/
@JSONField(name="id")
public void setId(Integer id) {
set("id", id);
}
/**
* @return id
*/
@JSONField(name="id")
public Integer getId() {
return getInt("id");
}
/**
* name: item_code
* type: VARCHAR(50)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param itemCode
*/
@JSONField(name="item_code")
public void setItemCode(String itemCode) {
set("item_code", itemCode);
}
/**
* @return item_code
*/
@JSONField(name="item_code")
public String getItemCode() {
return getStr("item_code");
}
/**
* name: item_name
* type: VARCHAR(50)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param itemName
*/
@JSONField(name="item_name")
public void setItemName(String itemName) {
set("item_name", itemName);
}
/**
* @return item_name
*/
@JSONField(name="item_name")
public String getItemName() {
return getStr("item_name");
}
/**
* name: create_time
* type: DATETIME(19)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param createTime
*/
@JSONField(name="create_time")
public void setCreateTime(java.util.Date createTime) {
set("create_time", createTime);
}
/**
* @return create_time
*/
@JSONField(name="create_time")
public java.util.Date getCreateTime() {
return get("create_time");
}
/**
* name: memo
* type: VARCHAR(20)
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
* @param memo
*/
@JSONField(name="memo")
public void setMemo(String memo) {
set("memo", memo);
}
/**
* @return memo
*/
@JSONField(name="memo")
public String getMemo() {
return getStr("memo");
}
}

View File

@ -0,0 +1,242 @@
package com.cowr.model.base;
import com.cowr.common.base.BaseModel;
import com.jfinal.plugin.activerecord.IBean;
import com.alibaba.fastjson.annotation.JSONField;
/**
* Generated by COWR Tue Dec 07 16:33:48 CST 2021
* TableName: add_subtract_item_record
* Remarks:
* PrimaryKey: id
*/
@SuppressWarnings("serial")
public abstract class BaseAddSubtractItemRecord<M extends BaseAddSubtractItemRecord<M>> extends BaseModel<M> implements IBean {
public static final String tablename = "add_subtract_item_record";
@JSONField(serialize=false)
public String getTablename(){
return tablename;
}
/**
* name: id
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: YES
* defaultValue:
* @param id
*/
@JSONField(name="id")
public void setId(Integer id) {
set("id", id);
}
/**
* @return id
*/
@JSONField(name="id")
public Integer getId() {
return getInt("id");
}
/**
* name: year
* type: YEAR(4)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param year
*/
@JSONField(name="year")
public void setYear(Integer year) {
set("year", year);
}
/**
* @return year
*/
@JSONField(name="year")
public Integer getYear() {
return getInt("year");
}
/**
* name: item_code
* type: VARCHAR(50)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param itemCode
*/
@JSONField(name="item_code")
public void setItemCode(String itemCode) {
set("item_code", itemCode);
}
/**
* @return item_code
*/
@JSONField(name="item_code")
public String getItemCode() {
return getStr("item_code");
}
/**
* name: item_name
* type: VARCHAR(50)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param itemName
*/
@JSONField(name="item_name")
public void setItemName(String itemName) {
set("item_name", itemName);
}
/**
* @return item_name
*/
@JSONField(name="item_name")
public String getItemName() {
return getStr("item_name");
}
/**
* name: item_value
* type: DECIMAL UNSIGNED(12,2)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue: 0.00
* @param itemValue
*/
@JSONField(name="item_value")
public void setItemValue(java.math.BigDecimal itemValue) {
set("item_value", itemValue);
}
/**
* @return item_value
*/
@JSONField(name="item_value")
public java.math.BigDecimal getItemValue() {
return get("item_value");
}
/**
* name: item_type
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param itemType 12
*/
@JSONField(name="item_type")
public void setItemType(Integer itemType) {
set("item_type", itemType);
}
/**
* @return item_type 12
*/
@JSONField(name="item_type")
public Integer getItemType() {
return getInt("item_type");
}
/**
* name: create_time
* type: DATETIME(19)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param createTime
*/
@JSONField(name="create_time")
public void setCreateTime(java.util.Date createTime) {
set("create_time", createTime);
}
/**
* @return create_time
*/
@JSONField(name="create_time")
public java.util.Date getCreateTime() {
return get("create_time");
}
/**
* name: update_time
* type: DATETIME(19)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param updateTime
*/
@JSONField(name="update_time")
public void setUpdateTime(java.util.Date updateTime) {
set("update_time", updateTime);
}
/**
* @return update_time
*/
@JSONField(name="update_time")
public java.util.Date getUpdateTime() {
return get("update_time");
}
/**
* name: memo
* type: VARCHAR(255)
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
* @param memo
*/
@JSONField(name="memo")
public void setMemo(String memo) {
set("memo", memo);
}
/**
* @return memo
*/
@JSONField(name="memo")
public String getMemo() {
return getStr("memo");
}
/**
* name: del
* type: INT(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue: 0
* @param del
*/
@JSONField(name="del")
public void setDel(Integer del) {
set("del", del);
}
/**
* @return del
*/
@JSONField(name="del")
public Integer getDel() {
return getInt("del");
}
}

View File

@ -42,28 +42,6 @@ public abstract class BasePresellOrder<M extends BasePresellOrder<M>> extends Ba
return getStr("id");
}
/**
* name: presell_sn
* type: CHAR(16)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param presellSn YYYYMMDD + id线 + +
*/
@JSONField(name="presell_sn")
public void setPresellSn(String presellSn) {
set("presell_sn", presellSn);
}
/**
* @return presell_sn YYYYMMDD + id线 + +
*/
@JSONField(name="presell_sn")
public String getPresellSn() {
return getStr("presell_sn");
}
/**
* name: customer_id
* type: INT(11)
@ -152,6 +130,28 @@ public abstract class BasePresellOrder<M extends BasePresellOrder<M>> extends Ba
return get("presell_amount");
}
/**
* name: pug_amount
* type: DECIMAL(12,2)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue: 0.00
* @param pugAmount
*/
@JSONField(name="pug_amount")
public void setPugAmount(java.math.BigDecimal pugAmount) {
set("pug_amount", pugAmount);
}
/**
* @return pug_amount
*/
@JSONField(name="pug_amount")
public java.math.BigDecimal getPugAmount() {
return get("pug_amount");
}
/**
* name: invoice_number
* type: VARCHAR(20)

View File

@ -0,0 +1,266 @@
package com.cowr.model.base;
import com.cowr.common.base.BaseModel;
import com.jfinal.plugin.activerecord.IBean;
import com.alibaba.fastjson.annotation.JSONField;
/**
* Generated by COWR Tue Dec 07 16:33:48 CST 2021
* TableName: product_price_modify
* Remarks:
* PrimaryKey: id
*/
@SuppressWarnings("serial")
public abstract class BaseProductPriceModify<M extends BaseProductPriceModify<M>> extends BaseModel<M> implements IBean {
public static final String tablename = "product_price_modify";
@JSONField(serialize=false)
public String getTablename(){
return tablename;
}
/**
* name: id
* type: CHAR(32)
* isNullable: NO
* isPrimaryKey: YES
* defaultValue:
* @param id uuid
*/
@JSONField(name="id")
public void setId(String id) {
set("id", id);
}
/**
* @return id uuid
*/
@JSONField(name="id")
public String getId() {
return getStr("id");
}
/**
* name: customer_id
* type: INT UNSIGNED(10)
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
* @param customerId id
*/
@JSONField(name="customer_id")
public void setCustomerId(Integer customerId) {
set("customer_id", customerId);
}
/**
* @return customer_id id
*/
@JSONField(name="customer_id")
public Integer getCustomerId() {
return getInt("customer_id");
}
/**
* name: supermarket_id
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param supermarketId id
*/
@JSONField(name="supermarket_id")
public void setSupermarketId(Integer supermarketId) {
set("supermarket_id", supermarketId);
}
/**
* @return supermarket_id id
*/
@JSONField(name="supermarket_id")
public Integer getSupermarketId() {
return getInt("supermarket_id");
}
/**
* name: product_id
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param productId id
*/
@JSONField(name="product_id")
public void setProductId(Integer productId) {
set("product_id", productId);
}
/**
* @return product_id id
*/
@JSONField(name="product_id")
public Integer getProductId() {
return getInt("product_id");
}
/**
* name: unit_price
* type: DECIMAL UNSIGNED(12,2)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param unitPrice
*/
@JSONField(name="unit_price")
public void setUnitPrice(java.math.BigDecimal unitPrice) {
set("unit_price", unitPrice);
}
/**
* @return unit_price
*/
@JSONField(name="unit_price")
public java.math.BigDecimal getUnitPrice() {
return get("unit_price");
}
/**
* name: type
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param type 12
*/
@JSONField(name="type")
public void setType(Integer type) {
set("type", type);
}
/**
* @return type 12
*/
@JSONField(name="type")
public Integer getType() {
return getInt("type");
}
/**
* name: state
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param state 1.2.9.
*/
@JSONField(name="state")
public void setState(Integer state) {
set("state", state);
}
/**
* @return state 1.2.9.
*/
@JSONField(name="state")
public Integer getState() {
return getInt("state");
}
/**
* name: change_time
* type: DATETIME(19)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param changeTime
*/
@JSONField(name="change_time")
public void setChangeTime(java.util.Date changeTime) {
set("change_time", changeTime);
}
/**
* @return change_time
*/
@JSONField(name="change_time")
public java.util.Date getChangeTime() {
return get("change_time");
}
/**
* name: create_time
* type: DATETIME(19)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param createTime
*/
@JSONField(name="create_time")
public void setCreateTime(java.util.Date createTime) {
set("create_time", createTime);
}
/**
* @return create_time
*/
@JSONField(name="create_time")
public java.util.Date getCreateTime() {
return get("create_time");
}
/**
* name: verify_time
* type: DATETIME(19)
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
* @param verifyTime
*/
@JSONField(name="verify_time")
public void setVerifyTime(java.util.Date verifyTime) {
set("verify_time", verifyTime);
}
/**
* @return verify_time
*/
@JSONField(name="verify_time")
public java.util.Date getVerifyTime() {
return get("verify_time");
}
/**
* name: create_user_id
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param createUserId id
*/
@JSONField(name="create_user_id")
public void setCreateUserId(Integer createUserId) {
set("create_user_id", createUserId);
}
/**
* @return create_user_id id
*/
@JSONField(name="create_user_id")
public Integer getCreateUserId() {
return getInt("create_user_id");
}
}

View File

@ -0,0 +1,178 @@
package com.cowr.model.base;
import com.cowr.common.base.BaseModel;
import com.jfinal.plugin.activerecord.IBean;
import com.alibaba.fastjson.annotation.JSONField;
/**
* Generated by COWR Tue Dec 07 16:33:48 CST 2021
* TableName: product_price_modify_log
* Remarks:
* PrimaryKey: id
*/
@SuppressWarnings("serial")
public abstract class BaseProductPriceModifyLog<M extends BaseProductPriceModifyLog<M>> extends BaseModel<M> implements IBean {
public static final String tablename = "product_price_modify_log";
@JSONField(serialize=false)
public String getTablename(){
return tablename;
}
/**
* name: id
* type: CHAR(32)
* isNullable: NO
* isPrimaryKey: YES
* defaultValue:
* @param id uuid
*/
@JSONField(name="id")
public void setId(String id) {
set("id", id);
}
/**
* @return id uuid
*/
@JSONField(name="id")
public String getId() {
return getStr("id");
}
/**
* name: product_price_modify_id
* type: CHAR(32)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param productPriceModifyId id
*/
@JSONField(name="product_price_modify_id")
public void setProductPriceModifyId(String productPriceModifyId) {
set("product_price_modify_id", productPriceModifyId);
}
/**
* @return product_price_modify_id id
*/
@JSONField(name="product_price_modify_id")
public String getProductPriceModifyId() {
return getStr("product_price_modify_id");
}
/**
* name: state
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param state 1.23
*/
@JSONField(name="state")
public void setState(Integer state) {
set("state", state);
}
/**
* @return state 1.23
*/
@JSONField(name="state")
public Integer getState() {
return getInt("state");
}
/**
* name: change_time
* type: DATETIME(19)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param changeTime
*/
@JSONField(name="change_time")
public void setChangeTime(java.util.Date changeTime) {
set("change_time", changeTime);
}
/**
* @return change_time
*/
@JSONField(name="change_time")
public java.util.Date getChangeTime() {
return get("change_time");
}
/**
* name: change_user_id
* type: INT UNSIGNED(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param changeUserId id
*/
@JSONField(name="change_user_id")
public void setChangeUserId(Integer changeUserId) {
set("change_user_id", changeUserId);
}
/**
* @return change_user_id id
*/
@JSONField(name="change_user_id")
public Integer getChangeUserId() {
return getInt("change_user_id");
}
/**
* name: change_user_name
* type: VARCHAR(20)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
* @param changeUserName
*/
@JSONField(name="change_user_name")
public void setChangeUserName(String changeUserName) {
set("change_user_name", changeUserName);
}
/**
* @return change_user_name
*/
@JSONField(name="change_user_name")
public String getChangeUserName() {
return getStr("change_user_name");
}
/**
* name: memo
* type: VARCHAR(255)
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
* @param memo
*/
@JSONField(name="memo")
public void setMemo(String memo) {
set("memo", memo);
}
/**
* @return memo
*/
@JSONField(name="memo")
public String getMemo() {
return getStr("memo");
}
}

View File

@ -0,0 +1,43 @@
package com.cowr.ssjygl.addsubtractitemrecord;
import com.cowr.common.base.BaseService;
import com.cowr.model.AddSubtractItemRecord;
import com.jfinal.kit.StrKit;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item_record
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemRecordService extends BaseService {
public static final AddSubtractItemRecordService me = new AddSubtractItemRecordService();
public BigDecimal getAddSubtractItemValueByYearAndCode(String year, String item_code) {
BigDecimal ret = new BigDecimal(0);
String sql = "select * from add_subtract_item_record t where 1=1 and del = 0";
List<Object> paraList = new ArrayList<>();
if (year != null) {
sql += " and t.year = ? \n";
paraList.add(year);
}
if (StrKit.notBlank(item_code)) {
sql += " and t.item_code = ? \n";
paraList.add(item_code.trim());
}
AddSubtractItemRecord record = AddSubtractItemRecord.dao.findFirst(sql, paraList.toArray());
if (record != null) {
ret = record.getItemValue();
}
return ret;
}
}

View File

@ -13,6 +13,11 @@ public class PrepayCustomerService {
return PrepayCustomer.dao.findFirst("select * from prepay_customer where customer_id = ? limit 1", customer_id);
}
/**
* 退
* @param customer_id
* @return
*/
public PrepayCustomer getPrepayCustomerSurplus(int customer_id) {
return PrepayCustomer.dao.findFirst("SELECT\n" +
" a.*\n" +

View File

@ -0,0 +1,24 @@
package com.cowr.ssjygl.productpricemodify;
import com.cowr.common.validator.CrudParamValidator;
import com.cowr.common.view.Result;
import com.jfinal.core.Controller;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: product_price_modify
* Remarks:
* PrimaryKey: id
*/
public class ProductPriceModifyPKValidator extends CrudParamValidator {
@Override
protected void validate(Controller c) {
validateRequired("id", "id", "id 必填");
validateString("id", 1, 32, "id", "id 长度 1~32");
}
protected void handleError(Controller c) {
c.renderJson(Result.failed(getErrmsg()));
}
}

View File

@ -0,0 +1,114 @@
package com.cowr.ssjygl.productpricemodify;
import com.cowr.common.Const;
import com.cowr.common.base.BaseService;
import com.cowr.common.view.PageParam;
import com.cowr.model.ProductPriceModify;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import java.util.ArrayList;
import java.util.List;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: product_price_modify
* Remarks:
* PrimaryKey: id
*/
public class ProductPriceModifyService extends BaseService {
public static final ProductPriceModifyService me = new ProductPriceModifyService();
public Page<Record> find(PageParam pp, String name, String stm, String etm, Integer supermarket_id, Integer state) {
String selectsql = "select t.*, c.name customer_name, p.name product_name, s.name supermarket_name \n";
String fromsql = " from product_price_modify t \n" +
" left join customer c on t.customer_id = c.id \n" +
" left join product p on t.product_id = p.id \n" +
" left join supermarket s on t.supermarket_id = s.id \n" +
" where 1 = 1 \n";
List<Object> paraList = new ArrayList<>();
if (StrKit.notBlank(name)) {
fromsql += " and c.name like ? \n";
paraList.add("%" + name.trim() + "%");
}
if (StrKit.notBlank(stm)) {
fromsql += " and t.create_time >= ? \n";
paraList.add(stm);
}
if (StrKit.notBlank(etm)) {
fromsql += " and t.create_time <= ? \n";
paraList.add(etm);
}
if (supermarket_id != null) {
fromsql += " and t.supermarket_id = ? \n";
paraList.add(supermarket_id);
}
if (state != null) {
fromsql += " and t.state = ? \n";
paraList.add(state);
}
String totalRowSql = "select count(*) " + fromsql;
String findSql = selectsql + fromsql;
// 前端传了排序字段,并且排序字段存在相关表中
if (StrKit.notBlank(pp.getSort_field()) && ProductPriceModify.dao.hasColunm(pp.getSort_field())) {
findSql += " order by t." + pp.getSort_field() + " is null, t." + pp.getSort_field();
if (Const.ORDER_BY_ASC.equals(pp.getSort_order())) {
findSql += " " + Const.ORDER_BY_ASC;
} else {
findSql += " " + Const.ORDER_BY_DESC;
}
} else {
findSql += " order by t.create_time desc";
}
return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray());
}
public List<Record> list(String name, String stm, String etm, Integer supermarket_id, Integer state) {
String sql = "select t.*, c.name customer_name, p.name product_name, s.name supermarket_name \n" +
" from product_price_modify t \n" +
" left join customer c on t.customer_id = c.id \n" +
" left join product p on t.product_id = p.id \n" +
" left join supermarket s on t.supermarket_id = s.id \n" +
" where 1 = 1";
List<Object> paraList = new ArrayList<>();
if (StrKit.notBlank(name)) {
sql += " and c.name like ? \n";
paraList.add("%" + name.trim() + "%");
}
if (StrKit.notBlank(stm)) {
sql += " and t.create_time >= ? \n";
paraList.add(stm);
}
if (StrKit.notBlank(etm)) {
sql += " and t.create_time <= ? \n";
paraList.add(etm);
}
if (supermarket_id != null) {
sql += " and t.supermarket_id = ? \n";
paraList.add(supermarket_id);
}
if (state != null) {
sql += " and t.state = ? \n";
paraList.add(state);
}
sql += " order by t.create_time desc";
return Db.find(sql, paraList.toArray());
}
}

View File

@ -0,0 +1,50 @@
package com.cowr.ssjygl.productpricemodify;
import com.jfinal.core.Controller;
import com.jfinal.kit.StrKit;
import com.cowr.common.validator.CrudParamValidator;
import com.cowr.common.view.Result;
import com.cowr.model.ProductPriceModify;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: product_price_modify
* Remarks:
* PrimaryKey: id
*/
public class ProductPriceModifyValidator extends CrudParamValidator {
@Override
protected void validate(Controller c) {
// 默认新增时,前端不需要传主键。若需要前端传主键,需要去掉这个判断
if (!"save".equals(getActionMethodName())) {
validateRequired("id", "id", "id 必填");
validateString("id", 1, 32, "id", "id 长度 1~32");
}
if (StrKit.notBlank(c.get("customer_id"))) { // 可为空字段,当传入值时,才做验证
validateLong("customer_id", 1, 2147483647, "customer_id", "customer_id 范围 1~2147483647");
}
validateRequired("supermarket_id", "supermarket_id", "supermarket_id 必填");
validateLong("supermarket_id", 1, 2147483647, "supermarket_id", "supermarket_id 范围 1~2147483647");
validateRequired("product_id", "product_id", "product_id 必填");
validateLong("product_id", 1, 2147483647, "product_id", "product_id 范围 1~2147483647");
validateRequired("unit_price", "unit_price", "unit_price 必填");
validateBigDecimal("unit_price", new java.math.BigDecimal(-9.9999999999E10), new java.math.BigDecimal(9.9999999999E10), "unit_price", "unit_price 范围 -9.9999999999E10~9.9999999999E10");
validateRequired("type", "type", "type 必填");
validateLong("type", 1, 2, "type", "type 范围1或2");
// 使用 model 更新时model 不能只有主键有值
// 这里用 getActionMethodName 写死,判断是 update 时,才做验证
// 如果确实是需要将主键外的字段置为 null可以在代码生成后删掉这段
if ("edit".equals(getActionMethodName())) {
validateUpdateModel(ProductPriceModify.class, "", true); // 忽略不在model中的字段
}
}
protected void handleError(Controller c) {
c.renderJson(Result.failed(getErrmsg()));
}
}

View File

@ -2726,26 +2726,27 @@ public class OrderStatService {
" select\n" +
" g.customer_id,\n" +
" ifnull(sum(g.presell_amount), 0) total_presell_amount,\n" +
" 0 total_presell_pug,\n" +
" ifnull(sum(g.pug_amount), 0) total_presell_pug,\n" +
" ifnull(sum(case when g.supermarket_id = 1 or g.supermarket_id = 7 then g.presell_amount end), 0) xsl_1,\n" +
" ifnull(sum(case when g.supermarket_id = 2 then g.presell_amount end), 0) xsl_2,\n" +
" ifnull(sum(case when g.supermarket_id = 3 then g.presell_amount end), 0) xsl_3,\n" +
" ifnull(sum(case when g.supermarket_id = 4 then g.presell_amount end), 0) xsl_4,\n" +
" ifnull(sum(case when g.supermarket_id = 5 or g.supermarket_id = 9 then g.presell_amount end), 0) xsl_5,\n" +
" ifnull(sum(case when g.supermarket_id = 6 or g.supermarket_id = 8 or g.supermarket_id = 10 then g.presell_amount end), 0) xsl_6,\n" +
" ifnull(sum(case when g.supermarket_id = 11 then g.presell_amount end), 0) xsl_11,\n" +
" 0 xse_1,\n" +
" 0 xse_2,\n" +
" 0 xse_3,\n" +
" 0 xse_4,\n" +
" 0 xse_5,\n" +
" 0 xse_6,\n" +
" 0 xse_11\n" +
" ifnull(sum(case when g.supermarket_id = 3 then g.presell_amount end), 0) xsl_3,\n" +
" ifnull(sum(case when g.supermarket_id = 4 then g.presell_amount end), 0) xsl_4,\n" +
" ifnull(sum(case when g.supermarket_id = 5 or g.supermarket_id = 9 then g.presell_amount end), 0) xsl_5,\n" +
" ifnull(sum(case when g.supermarket_id = 6 or g.supermarket_id = 8 or g.supermarket_id = 10 then g.presell_amount end), 0) xsl_6,\n" +
" ifnull(sum(case when g.supermarket_id = 11 then g.presell_amount end), 0) xsl_11,\n" +
" ifnull(sum(case when g.supermarket_id = 1 or g.supermarket_id = 7 then g.pug_amount end), 0) xse_1,\n" +
" ifnull(sum(case when g.supermarket_id = 2 then g.pug_amount end), 0) xse_2,\n" +
" ifnull(sum(case when g.supermarket_id = 3 then g.pug_amount end), 0) xse_3,\n" +
" ifnull(sum(case when g.supermarket_id = 4 then g.pug_amount end), 0) xse_4,\n" +
" ifnull(sum(case when g.supermarket_id = 5 or g.supermarket_id = 9 then g.pug_amount end), 0) xse_5,\n" +
" ifnull(sum(case when g.supermarket_id = 6 or g.supermarket_id = 8 or g.supermarket_id = 10 then g.pug_amount end), 0) xse_6,\n" +
" ifnull(sum(case when g.supermarket_id = 11 then g.pug_amount end), 0) xse_11\n" +
" from (\n" +
" SELECT\n" +
" p.customer_id,\n" +
" p.supermarket_id,\n" +
" ifnull(sum(p.presell_amount), 0) presell_amount\n" +
" ifnull(sum(p.presell_amount), 0) presell_amount,\n" +
" ifnull(sum(p.pug_amount), 0) pug_amount\n" +
" FROM\n" +
" presell_order p\n" +
" WHERE\n" +

View File

@ -42,6 +42,7 @@ import com.cowr.local.ssjygl.prepay.prepaytruck.PrepayTruckController;
import com.cowr.local.ssjygl.prepay.refunddetail.RefundDetailController;
import com.cowr.local.ssjygl.presellorder.PresellOrderController;
import com.cowr.local.ssjygl.product.ProductController;
import com.cowr.local.ssjygl.productpricemodify.ProductPriceModifyController;
import com.cowr.local.ssjygl.purchase.PurchaseController;
import com.cowr.local.ssjygl.sandfarm.SandfarmController;
import com.cowr.local.ssjygl.sms.log.SmsLogController;
@ -235,6 +236,7 @@ public class Config extends JFinalConfig {
me.add("/orderclustertruck", OrderclusterTruckController.class);
me.add("/order/invalidverify", OrderInvalidVerifyController.class);
me.add("/presellorder", PresellOrderController.class);
me.add("/productPriceModify", ProductPriceModifyController.class);
// -- 统计
me.add("/stat/sale", OrderStatController.class);

View File

@ -0,0 +1,41 @@
package com.cowr.local.ssjygl.productpricemodify;
import com.cowr.common.view.PageParam;
import com.cowr.common.view.Result;
import com.cowr.ssjygl.productpricemodify.ProductPriceModifyService;
import com.jfinal.core.Controller;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: product_price_modify
* Remarks:
* PrimaryKey: id
*/
public class ProductPriceModifyController extends Controller {
/**
* product_price_modify
*/
public void find(){
String name = get("name");
String stm = get("stm");
String etm = get("etm");
Integer supermarket_id = getInt("supermarket_id");
Integer state = getInt("state");
PageParam pp = getBean(PageParam.class, "", true);
renderJson(Result.object(ProductPriceModifyService.me.find(pp, name, stm, etm, supermarket_id, state)));
}
/**
* product_price_modify
*/
public void list(){
String name = get("name");
String stm = get("stm");
String etm = get("etm");
Integer supermarket_id = getInt("supermarket_id");
Integer state = getInt("state");
renderJson(Result.object(ProductPriceModifyService.me.list(name, stm, etm, supermarket_id, state)));
}
}

View File

@ -0,0 +1,79 @@
package com.cowr.service.ssjygl.addsubtractitem;
import com.cowr.common.view.PageParam;
import com.cowr.common.view.Result;
import com.cowr.model.AddSubtractItem;
import com.cowr.model.Sysuser;
import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService;
import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.log.Log;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemController extends Controller {
private static Log log = Log.getLog(AddSubtractItemController.class);
/**
* add_subtract_item
*/
@Before(AddSubtractItemValidator.class)
public void save(){
AddSubtractItem model = getModel(AddSubtractItem.class, "", true); // 忽略不在model中的字段
renderJson(AddSubtractItemService.me.save(model));
}
/**
* add_subtract_item
*/
@Before(AddSubtractItemValidator.class)
public void edit(){
AddSubtractItem model = getModel(AddSubtractItem.class, "", true); // 忽略不在model中的字段
renderJson(AddSubtractItemService.me.update(model));
}
/**
* add_subtract_item
*/
@Before(AddSubtractItemPKValidator.class)
public void del(){
try {
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
if (tokenuser == null) {
renderJson(Result.noauth());
return;
}
AddSubtractItem model = getModel(AddSubtractItem.class, "", true); // 忽略不在model中的字段
renderJson(AddSubtractItemService.me.delete(model));
} catch (Exception e) {
log.error(e.getMessage(), e);
renderJson(Result.failed("删除出错"));
}
}
/**
* add_subtract_item
*/
public void find(){
PageParam pp = getBean(PageParam.class, "", true);
String item_name = get("item_name");
String stm = get("stm");
String etm = get("etm");
renderJson(Result.object(AddSubtractItemService.me.find(pp, item_name, stm, etm)));
}
/**
* add_subtract_item
*/
public void list(){
renderJson(Result.object(AddSubtractItemService.me.list()));
}
}

View File

@ -0,0 +1,24 @@
package com.cowr.service.ssjygl.addsubtractitem;
import com.cowr.common.validator.CrudParamValidator;
import com.cowr.common.view.Result;
import com.jfinal.core.Controller;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemPKValidator extends CrudParamValidator {
@Override
protected void validate(Controller c) {
validateRequired("id", "id", "id 必填");
validateLong("id", 1, 2147483647, "id", "id 范围 1~2147483647");
}
protected void handleError(Controller c) {
c.renderJson(Result.failed(getErrmsg()));
}
}

View File

@ -0,0 +1,148 @@
package com.cowr.service.ssjygl.addsubtractitem;
import com.cowr.common.Const;
import com.cowr.common.base.BaseService;
import com.cowr.common.view.PageParam;
import com.cowr.common.view.Result;
import com.cowr.model.AddSubtractItem;
import com.cowr.model.AddSubtractItemRecord;
import com.jfinal.kit.StrKit;
import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.IAtom;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemService extends BaseService {
private static final Log log = Log.getLog(AddSubtractItemService.class);
public static final AddSubtractItemService me = new AddSubtractItemService();
public Result save(AddSubtractItem model) {
String item_code = model.getItemCode();
AddSubtractItem item = AddSubtractItem.dao.findFirst("select * from add_subtract_item where item_code = ?", item_code);
if (item != null) {
return Result.failed("增减项编码【" + item_code + "】已存在");
}
model.setCreateTime(new Date());
try {
boolean ret = model.save();
return ret ? Result.object(model) : Result.failed(false, "新增失败");
} catch (Exception e) {
log.error(e.getMessage(), e);
if (e.getMessage().contains("PRIMARY")) {
return Result.failed(false, "主键冲突");
} else {
return Result.failed(false, e.getMessage());
}
}
}
public Result update(AddSubtractItem model) {
AddSubtractItem old = AddSubtractItem.dao.findById(model.getId());
if (old == null) {
return Result.failed("按主键等于" + model.getId() + "未找到数据");
}
String item_code = model.getItemCode();
String old_item_code = old.getItemCode();
AddSubtractItem item = AddSubtractItem.dao.findFirst("select * from add_subtract_item where item_code = ?", item_code);
if (item != null) {
return Result.failed("增减项编码【" + item_code + "】已存在");
}
List<AddSubtractItemRecord> list = AddSubtractItemRecord.dao.find("select * from add_subtract_item_record where item_code = ?", old_item_code);
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() {
try {
if (list.size() > 0) {
for (AddSubtractItemRecord md : list) {
md.setItemCode(item_code);
md.setUpdateTime(new Date());
boolean ret = md.update();
if (!ret) {
return false;
}
}
}
return model.update();
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
});
return ret ? Result.object(model) : Result.failed(false, "修改失败");
}
public Result delete(AddSubtractItem model) {
try {
if (!model.checkExistsByPk()) {
return Result.failed(false, "按主键未找到对应记录");
}
List<AddSubtractItemRecord> list = AddSubtractItemRecord.dao.find("select * from add_subtract_item_record where item_code = ?", model.getItemCode());
if (list.size() > 0) {
return Result.failed(false, "要删除的项已被使用");
}
return Result.object(model.delete());
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.failed(false, null);
}
}
public Page<Record> find(PageParam pp, String item_name, String stm, String etm) {
String selectsql = "select * ";
String fromsql = "from add_subtract_item t where 1=1 ";
List<Object> paraList = new ArrayList<>();
if (StrKit.notBlank(item_name)) {
fromsql += " and t.item_name like ? \n";
paraList.add("%" + item_name.trim() + "%");
}
if (StrKit.notBlank(stm)) {
fromsql += " and t.create_time >= ? \n";
paraList.add(stm);
}
if (StrKit.notBlank(etm)) {
fromsql += " and t.create_time <= ? \n";
paraList.add(etm);
}
String totalRowSql = "select count(*) " + fromsql;
String findSql = selectsql + fromsql;
// 前端传了排序字段,并且排序字段存在相关表中
if (StrKit.notBlank(pp.getSort_field()) && AddSubtractItem.dao.hasColunm(pp.getSort_field())) {
findSql += " order by t." + pp.getSort_field() + " is null, t." + pp.getSort_field();
if (Const.ORDER_BY_ASC.equals(pp.getSort_order())) {
findSql += " " + Const.ORDER_BY_ASC;
} else {
findSql += " " + Const.ORDER_BY_DESC;
}
}else {
findSql += " order by t.create_time desc ";
}
return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray());
}
public List<AddSubtractItem> list() {
return AddSubtractItem.dao.find("select * from add_subtract_item");
}
}

View File

@ -0,0 +1,44 @@
package com.cowr.service.ssjygl.addsubtractitem;
import com.jfinal.core.Controller;
import com.cowr.common.validator.CrudParamValidator;
import com.cowr.common.view.Result;
import com.cowr.model.AddSubtractItem;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemValidator extends CrudParamValidator {
@Override
protected void validate(Controller c) {
// 默认新增时,前端不需要传主键。若需要前端传主键,需要去掉这个判断
if (!"save".equals(getActionMethodName())) {
validateRequired("id", "id", "id 必填");
validateLong("id", 1, 2147483647, "id", "id 范围 1~2147483647");
}
validateRequired("item_code", "item_code", "item_code 必填");
validateString("item_code", 1, 50, "item_code", "item_code 长度 1~50");
validateRequired("item_name", "item_name", "item_name 必填");
validateString("item_name", 1, 50, "item_name", "item_name 长度 1~50");
validateString("memo", 0, 255, "memo", "memo 长度 0~255");
// 使用 model 更新时model 不能只有主键有值
// 这里用 getActionMethodName 写死,判断是 update 时,才做验证
// 如果确实是需要将主键外的字段置为 null可以在代码生成后删掉这段
if ("edit".equals(getActionMethodName())) {
validateUpdateModel(AddSubtractItem.class, "", true); // 忽略不在model中的字段
}
}
protected void handleError(Controller c) {
c.renderJson(Result.failed(getErrmsg()));
}
}

View File

@ -0,0 +1,138 @@
package com.cowr.service.ssjygl.addsubtractitemrecord;
import com.alibaba.fastjson.JSONArray;
import com.cowr.common.Const;
import com.cowr.common.view.PageParam;
import com.cowr.common.view.Result;
import com.cowr.model.Sysuser;
import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService;
import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.log.Log;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item_record
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemRecordController extends Controller {
private static Log log = Log.getLog(AddSubtractItemRecordController.class);
/**
* add_subtract_item_record
*/
@Before(AddSubtractItemRecordValidator.class)
public void save(){
try {
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
if (tokenuser == null) {
renderJson(Result.noauth());
return;
}
Integer year = getInt("year");
String arr = get("itemArr");
JSONArray itemArr = JSONArray.parseArray(arr);
renderJson(AddSubtractItemRecordService.me.save(year, itemArr));
} catch (Exception e) {
log.error(e.getMessage(), e);
renderJson(Result.failed("保存出错"));
}
}
/**
* add_subtract_item_record
*/
@Before(AddSubtractItemRecordValidator.class)
public void edit(){
try {
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
if (tokenuser == null) {
renderJson(Result.noauth());
return;
}
Integer year = getInt("year");
String arr = get("itemArr");
JSONArray itemArr = JSONArray.parseArray(arr);
renderJson(AddSubtractItemRecordService.me.update(year, itemArr));
}catch (Exception e){
log.error(e.getMessage(), e);
renderJson(Result.failed("修改出错"));
}
}
/**
* add_subtract_item_record
*/
@Before(AddSubtractItemRecordValidator.class)
public void del(){
try {
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
if (tokenuser == null) {
renderJson(Result.noauth());
return;
}
String arr = get("itemArr");
JSONArray itemArr = JSONArray.parseArray(arr);
renderJson(AddSubtractItemRecordService.me.delete(itemArr));
} catch (Exception e) {
log.error(e.getMessage(), e);
renderJson(Result.failed("删除出错"));
}
}
/**
* add_subtract_item_record
*/
@Before(AddSubtractItemRecordValidator.class)
public void restore(){
try {
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
if (tokenuser == null) {
renderJson(Result.noauth());
return;
}
String arr = get("itemArr");
JSONArray itemArr = JSONArray.parseArray(arr);
renderJson(AddSubtractItemRecordService.me.restore(itemArr));
} catch (Exception e) {
log.error(e.getMessage(), e);
renderJson(Result.failed("删除出错"));
}
}
/**
* add_subtract_item_record
*/
public void find(){
PageParam pp = getBean(PageParam.class, "", true);
Integer year = getInt("year");
String item_name = get("item_name");
String item_code = get("item_code");
String stm = get("stm");
String etm = get("etm");
Integer del = getInt("del", Const.LOGIC_DEL_VALID); // 默认显示未删除的
renderJson(Result.object(AddSubtractItemRecordService.me.find(pp, year, item_name, item_code, stm, etm, del)));
}
/**
* add_subtract_item_record
*/
public void list(){
Integer year = getInt("year");
String item_name = get("item_name");
String item_code = get("item_code");
String stm = get("stm");
String etm = get("etm");
Integer del = getInt("del", Const.LOGIC_DEL_VALID); // 默认显示未删除的
renderJson(Result.object(AddSubtractItemRecordService.me.list(year, item_name, item_code, stm, etm, del)));
}
}

View File

@ -0,0 +1,24 @@
package com.cowr.service.ssjygl.addsubtractitemrecord;
import com.cowr.common.validator.CrudParamValidator;
import com.cowr.common.view.Result;
import com.jfinal.core.Controller;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item_record
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemRecordPKValidator extends CrudParamValidator {
@Override
protected void validate(Controller c) {
validateRequired("id", "id", "id 必填");
validateLong("id", 1, 2147483647, "id", "id 范围 1~2147483647");
}
protected void handleError(Controller c) {
c.renderJson(Result.failed(getErrmsg()));
}
}

View File

@ -0,0 +1,343 @@
package com.cowr.service.ssjygl.addsubtractitemrecord;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cowr.common.Const;
import com.cowr.common.base.BaseService;
import com.cowr.common.view.PageParam;
import com.cowr.model.AddSubtractItemRecord;
import com.cowr.common.view.Result;
import com.jfinal.kit.StrKit;
import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.IAtom;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item_record
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemRecordService extends BaseService {
private static final Log log = Log.getLog(AddSubtractItemRecordService.class);
public static final AddSubtractItemRecordService me = new AddSubtractItemRecordService();
public Page<Record> find(PageParam pp, Integer year, String item_name, String item_code, String stm, String etm, Integer del) {
String selectsql = "select * ";
String fromsql = "from add_subtract_item_record t where 1=1 ";
List<Object> paraList = new ArrayList<>();
if (del != null && (del == Const.LOGIC_DEL_VALID || del == Const.LOGIC_DEL_INVALID)) {
fromsql += " and t.del = ? \n";
paraList.add(del);
}
if (year != null) {
fromsql += " and t.year = ? \n";
paraList.add(year);
}
if (StrKit.notBlank(item_name)) {
fromsql += " and t.item_name like ? \n";
paraList.add("%" + item_name.trim() + "%");
}
if (StrKit.notBlank(item_code)) {
fromsql += " and t.item_code = ? \n";
paraList.add(item_code.trim());
}
if (StrKit.notBlank(stm)) {
fromsql += " and t.create_time >= ? \n";
paraList.add(stm);
}
if (StrKit.notBlank(etm)) {
fromsql += " and t.create_time <= ? \n";
paraList.add(etm);
}
String totalRowSql = "select count(*) " + fromsql;
String findSql = selectsql + fromsql;
// 前端传了排序字段,并且排序字段存在相关表中
if (StrKit.notBlank(pp.getSort_field()) && AddSubtractItemRecord.dao.hasColunm(pp.getSort_field())) {
findSql += " order by t." + pp.getSort_field() + " is null, t." + pp.getSort_field();
if (Const.ORDER_BY_ASC.equals(pp.getSort_order())) {
findSql += " " + Const.ORDER_BY_ASC;
} else {
findSql += " " + Const.ORDER_BY_DESC;
}
} else {
findSql += " order by t.create_time desc ";
}
return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray());
}
public List<AddSubtractItemRecord> list(Integer year, String item_name, String item_code, String stm, String etm, Integer del) {
String sql = "select * from add_subtract_item_record t where 1 = 1";
List<Object> paraList = new ArrayList<>();
if (del != null && (del == Const.LOGIC_DEL_VALID || del == Const.LOGIC_DEL_INVALID)) {
sql += " and t.del = ? \n";
paraList.add(del);
}
if (year != null) {
sql += " and t.year = ? \n";
paraList.add(year);
}
if (StrKit.notBlank(item_name)) {
sql += " and t.item_name like ? \n";
paraList.add("%" + item_name.trim() + "%");
}
if (StrKit.notBlank(item_code)) {
sql += " and t.item_code = ? \n";
paraList.add(item_code.trim());
}
if (StrKit.notBlank(stm)) {
sql += " and t.create_time >= ? \n";
paraList.add(stm);
}
if (StrKit.notBlank(etm)) {
sql += " and t.create_time <= ? \n";
paraList.add(etm);
}
return AddSubtractItemRecord.dao.find(sql, paraList.toArray());
}
public Result save(Integer year, JSONArray itemArr) {
List<AddSubtractItemRecord> list = AddSubtractItemRecord.dao.find("select * from add_subtract_item_record where year = ? and del = 0", year);
if (list != null && list.size() > 0) {
return Result.failed(year + "年已配置");
}
if (itemArr == null || itemArr.isEmpty()) {
return Result.failed("新增配置项不能为空");
}
List<AddSubtractItemRecord> newlist = new ArrayList<>();
for (int i = 0; i < itemArr.size(); i++) {
JSONObject obj = itemArr.getJSONObject(i);
try{
String item_code = obj.getString("item_code");
String item_name = obj.getString("item_name");
double item_value = obj.getDouble("item_value");
int item_type = obj.getIntValue("item_type");
AddSubtractItemRecord model = new AddSubtractItemRecord();
model.setYear(year);
model.setItemCode(item_code);
model.setItemName(item_name);
model.setItemValue(new BigDecimal(item_value).setScale(2, BigDecimal.ROUND_HALF_UP));
model.setItemType(item_type);
model.setCreateTime(new Date());
model.setUpdateTime(new Date());
newlist.add(model);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.failed("数据解析错误");
}
}
if (newlist.isEmpty()) {
return Result.failed("无效数据");
}
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() {
try {
// 单个对象调用 save 可以获取返回的自增id
for (AddSubtractItemRecord model : newlist) {
boolean ret = model.save();
if (!ret) {
return false;
}
}
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
});
return ret ? Result.object(true) : Result.failed("创建失败");
}
public Result update(Integer year, JSONArray itemArr) {
if (itemArr == null || itemArr.isEmpty()) {
return Result.failed("修改配置项不能为空");
}
List<AddSubtractItemRecord> newlist = new ArrayList<>();
for (int i = 0; i < itemArr.size(); i++) {
JSONObject obj = itemArr.getJSONObject(i);
try{
int id = obj.getIntValue("item_id");
String item_code = obj.getString("item_code");
String item_name = obj.getString("item_name");
int item_type = obj.getIntValue("item_type");
double item_value = obj.getDouble("item_value");
AddSubtractItemRecord model = new AddSubtractItemRecord();
if (id > 0) {
model.setId(id);
model.setUpdateTime(new Date());
} else if (id == 0){
model.setCreateTime(new Date());
model.setUpdateTime(new Date());
}
model.setYear(year);
model.setItemCode(item_code);
model.setItemName(item_name);
model.setItemType(item_type);
model.setItemValue(new BigDecimal(item_value).setScale(2, BigDecimal.ROUND_HALF_UP));
newlist.add(model);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.failed("数据解析错误");
}
}
if (newlist.isEmpty()) {
return Result.failed("无效数据");
}
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() {
try {
for (AddSubtractItemRecord model : newlist) {
boolean ret = model.getId() != null ? model.update() : model.save();
if (!ret) {
return false;
}
}
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
});
return ret ? Result.object(true) : Result.failed("修改失败");
}
public Result delete(JSONArray itemArr) {
if (itemArr == null || itemArr.isEmpty()) {
return Result.failed("删除配置项不能为空");
}
List<AddSubtractItemRecord> newlist = new ArrayList<>();
for (int i = 0; i < itemArr.size(); i++) {
JSONObject obj = itemArr.getJSONObject(i);
try{
int id = obj.getIntValue("item_id");
AddSubtractItemRecord model = AddSubtractItemRecord.dao.findById(id);
if (model == null) {
return Result.failed("按id等于" + id + "未找到记录");
}
model.setDel(1);
model.setUpdateTime(new Date());
newlist.add(model);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.failed("数据解析错误");
}
}
if (newlist.isEmpty()) {
return Result.failed("无效数据");
}
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() {
try {
// 单个对象调用 save 可以获取返回的自增id
for (AddSubtractItemRecord model : newlist) {
boolean ret = model.update();
if (!ret) {
return false;
}
}
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
});
return ret ? Result.object(true) : Result.failed("删除失败");
}
public Result restore(JSONArray itemArr) {
if (itemArr == null || itemArr.isEmpty()) {
return Result.failed("删除配置项不能为空");
}
List<AddSubtractItemRecord> newlist = new ArrayList<>();
for (int i = 0; i < itemArr.size(); i++) {
JSONObject obj = itemArr.getJSONObject(i);
try{
int id = obj.getIntValue("item_id");
AddSubtractItemRecord model = AddSubtractItemRecord.dao.findById(id);
if (model == null) {
return Result.failed("按id等于" + id + "未找到记录");
}
model.setDel(0);
model.setUpdateTime(new Date());
newlist.add(model);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.failed("数据解析错误");
}
}
if (newlist.isEmpty()) {
return Result.failed("无效数据");
}
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() {
try {
// 单个对象调用 save 可以获取返回的自增id
for (AddSubtractItemRecord model : newlist) {
boolean ret = model.update();
if (!ret) {
return false;
}
}
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
});
return ret ? Result.object(true) : Result.failed("恢复失败");
}
}

View File

@ -0,0 +1,27 @@
package com.cowr.service.ssjygl.addsubtractitemrecord;
import com.jfinal.core.Controller;
import com.cowr.common.validator.CrudParamValidator;
import com.cowr.common.view.Result;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: add_subtract_item_record
* Remarks:
* PrimaryKey: id
*/
public class AddSubtractItemRecordValidator extends CrudParamValidator {
@Override
protected void validate(Controller c) {
if ("save".equals(getActionMethodName()) || "edit".equals(getActionMethodName())) {
validateRequired("year", "year", "year必填");
validateString("year", 1, 4, "year", "year 长度 1~4");
}
validateRequiredString("itemArr", "itemArr", "itemArr必填");
}
protected void handleError(Controller c) {
c.renderJson(Result.failed(getErrmsg()));
}
}

View File

@ -1,45 +1,114 @@
package com.cowr.service.ssjygl.customer.supermarketproduct;
import com.cowr.common.enums.Enums;
import com.cowr.common.view.Result;
import com.cowr.model.*;
import com.cowr.service.ssjygl.base.BaseSyncService;
import com.cowr.service.ssjygl.main.SvrCacheData;
import com.cowr.service.ssjygl.synctask.SyncTaskService;
import com.cowr.ssjygl.modifylog.ModifyLogService;
import com.jfinal.kit.StrKit;
import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.IAtom;
import java.math.BigDecimal;
import java.util.Date;
public class CustomerSupermarketProductSyncService extends BaseSyncService {
private static Log log = Log.getLog(CustomerSupermarketProductSyncService.class);
public static CustomerSupermarketProductSyncService me = new CustomerSupermarketProductSyncService();
public Result saveOrUpdate(CustomerSupermarketProduct model, Sysuser sysuser) {
Customer customer = Customer.dao.findById(model.getCustomerId());
public Result saveOrUpdate(CustomerSupermarketProduct model, Sysuser user) {
Integer customer_id = model.getCustomerId();
Integer supermarket_id = model.getSupermarketId();
Integer product_id = model.getProductId();
BigDecimal unit_price = model.getUnitPrice();
Customer customer = Customer.dao.findById(customer_id);
if (customer == null) {
return Result.failed("没有找到对应客户信息");
}
Supermarket supermarket = SvrCacheData.SUP_CACHE.get(model.getSupermarketId());
Supermarket supermarket = SvrCacheData.SUP_CACHE.get(supermarket_id);
if (supermarket == null) {
return Result.failed("没找到砂站信息");
}
Product product = Product.dao.findById(model.getProductId());
Product product = Product.dao.findById(product_id);
if (product == null) {
return Result.failed("没有找到品类信息");
}
CustomerSupermarketProduct old = CustomerSupermarketProduct.dao.findByIds(model.getCustomerId(), model.getSupermarketId(), model.getProductId());
CustomerSupermarketProduct old = CustomerSupermarketProduct.dao.findByIds(customer_id, supermarket_id, product_id);
SupermarketProduct sp = SupermarketProduct.dao.findByIds(model.getSupermarketId(), model.getProductId());
SupermarketProduct sp = SupermarketProduct.dao.findByIds(supermarket_id, product_id);
if (sp == null) {
return Result.failed("砂站没有该品类");
}
if (old == null) {
return super.save(model, sysuser);
return super.save(model, user);
} else {
return super.update(model, sysuser);
// 提交单价修改申请
ProductPriceModify ppm = new ProductPriceModify();
ppm.setId(StrKit.getRandomUUID());
ppm.setCustomerId(customer_id);
ppm.setSupermarketId(supermarket_id);
ppm.setProductId(product_id);
ppm.setUnitPrice(unit_price);
ppm.setType(2);
ppm.setState(1);
ppm.setCreateTime(new Date());
ppm.setChangeTime(new Date());
ppm.setCreateUserId(user.getId());
SyncTask synctask = new SyncTask();
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() {
try {
boolean ret = ppm.save();
if (!ret) {
return false;
}
ProductPriceModifyLog his = new ProductPriceModifyLog();
his.setId(StrKit.getRandomUUID());
his.setProductPriceModifyId(ppm.getId());
his.setChangeUserId(user.getId());
his.setChangeUserName(user.getName());
his.setState(ppm.getState());
his.setChangeTime(new Date());
ret = his.save();
if (!ret) {
return false;
}
synctask.addSaveData(ppm);
synctask.addSaveData(his);
return SyncTaskService.me.save(synctask, supermarket_id)
&& ModifyLogService.me.save(ppm, null, Enums.DataOpType.SAVE.getId(), user);
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
});
if (ret) {
SyncTaskService.me.send(synctask);
}
return ret ? Result.object(ppm) : Result.failed(false, "修改失败");
}
}
}

View File

@ -7,6 +7,7 @@ import com.cowr.model.PrepayCustomer;
import com.cowr.service.ssjygl.main.Config;
import com.cowr.service.ssjygl.main.SvrCacheData;
import com.cowr.service.ssjygl.sms.log.SmsService;
import com.cowr.ssjygl.addsubtractitemrecord.AddSubtractItemRecordService;
import com.jfinal.kit.StrKit;
import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
@ -279,6 +280,12 @@ public class StatSmsJob implements Job {
return;
}
// 其他需扣除预付费充值金额对应的供砂量,需从本年度总销售量扣除
BigDecimal otherPrepaidAmount = AddSubtractItemRecordService.me.getAddSubtractItemValueByYearAndCode(year, "otherPrepaidAmount");
// 其他需扣除预付费充值金额,需从本年度总销售额中扣除
BigDecimal otherPrepaidMoney = AddSubtractItemRecordService.me.getAddSubtractItemValueByYearAndCode(year, "otherPrepaidMoney");
BigDecimal aggr_weight = orderobj.getBigDecimal("aggr_weight")
.subtract(subtractobj.getBigDecimal("weight"));
BigDecimal aggr_price = orderobj.getBigDecimal("aggr_price")
@ -295,6 +302,9 @@ public class StatSmsJob implements Job {
.subtract(new BigDecimal("410322.58")) // 石畈处置砂,要扣除
.subtract(new BigDecimal("69156.42")) // 石畈处置砂,要扣除
;
} else if (Integer.parseInt(year) > 2021) {
aggr_weight = aggr_weight.subtract(otherPrepaidAmount);
aggr_price = aggr_price.subtract(otherPrepaidMoney);
}
obj.put("aggr_cnt", orderobj.get("aggr_cnt"));

View File

@ -9,7 +9,10 @@ import com.cowr.common.handler.GlobalHandler;
import com.cowr.common.oss.OSSKit;
import com.cowr.common.plugin.QuartzPlugin;
import com.cowr.common.view.JsonRenderFactory;
import com.cowr.model.ProductPriceModify;
import com.cowr.model._MappingKit;
import com.cowr.service.ssjygl.addsubtractitem.AddSubtractItemController;
import com.cowr.service.ssjygl.addsubtractitemrecord.AddSubtractItemRecordController;
import com.cowr.service.ssjygl.blacklist.BlacklistController;
import com.cowr.service.ssjygl.cache.CacheController;
import com.cowr.service.ssjygl.customer.CustomerController;
@ -40,6 +43,7 @@ import com.cowr.service.ssjygl.prepay.prepaytruck.PrepayTruckController;
import com.cowr.service.ssjygl.prepay.refunddetail.RefundDetailController;
import com.cowr.service.ssjygl.presellorder.PresellOrderController;
import com.cowr.service.ssjygl.product.ProductController;
import com.cowr.service.ssjygl.productpricemodify.ProductPriceModifyController;
import com.cowr.service.ssjygl.purchase.PurchaseController;
import com.cowr.service.ssjygl.sandfarm.SandfarmController;
import com.cowr.service.ssjygl.sms.log.SmsLogController;
@ -172,6 +176,8 @@ public class Config extends JFinalConfig {
me.add("/purchase", PurchaseController.class);
me.add("/product", ProductController.class);
me.add("/stock", StockController.class);
me.add("/addsubtractitem", AddSubtractItemController.class);
me.add("/addsubtractitemrecord", AddSubtractItemRecordController.class);
me.add("/noticecontact", SmsNoticeContactController.class);
@ -212,6 +218,7 @@ public class Config extends JFinalConfig {
me.add("/orderclustertruck", OrderclusterTruckController.class);
me.add("/order/invalidverify", OrderInvalidVerifyController.class);
me.add("/presellorder", PresellOrderController.class);
me.add("/productpricemodify", ProductPriceModifyController.class);
// -- 统计
me.add("/stat/sale", OrderStatController.class);

View File

@ -3,7 +3,6 @@ package com.cowr.service.ssjygl.presellorder;
import com.alibaba.fastjson.JSONObject;
import com.cowr.common.Const;
import com.cowr.common.enums.Enums;
import com.cowr.common.utils.StrUtil;
import com.cowr.common.view.Result;
import com.cowr.model.*;
import com.cowr.service.ssjygl.base.BaseSyncService;
@ -38,7 +37,7 @@ public class PresellOrderSyncService extends BaseSyncService {
Customer customer = Customer.dao.findById(customer_id);
if (customer == null) {
return Result.failed(false,"按客户 id 未找到对应客户信息");
return Result.failed(false,"按客户id未找到对应客户信息");
}
Integer type = customer.getType();
if (type == null || type != 1) {
@ -60,8 +59,6 @@ public class PresellOrderSyncService extends BaseSyncService {
}
model.setId(StrKit.getRandomUUID());
String presell_order = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + StrUtil.getRandom(2);
model.setPresellSn(presell_order);
model.setCreateTime(new Date());
model.setCreateUserId(tokenuser.getId());
model.setCreateUserName(tokenuser.getName());
@ -134,11 +131,10 @@ public class PresellOrderSyncService extends BaseSyncService {
}
PresellOrder saveold = oldobj.clone();
// 将修改后的对象返回
String[] keys = model._getAttrNames();
for (String key : keys) {
oldobj.set(key, model.get(key));
}
oldobj.setPresellDate(model.getPresellDate());
oldobj.setInvoiceCode(model.getInvoiceCode());
oldobj.setInvoiceNumber(model.getInvoiceNumber());
oldobj.setMemo(model.getMemo());
SyncTask synctask = new SyncTask();
boolean ret = Db.tx(new IAtom() {
@ -191,6 +187,10 @@ public class PresellOrderSyncService extends BaseSyncService {
}
PresellOrder oldobj = model.findByPk(); // 找到旧记录进行更新
if (oldobj == null) {
return Result.failed(false, "按主键未找到对应记录");
}
if (!oldobj.hasDelKey()) {
return Result.failed(false, "不存在逻辑删除字段");
}

View File

@ -0,0 +1,63 @@
package com.cowr.service.ssjygl.productpricemodify;
import com.cowr.common.validator.StartAndEndTimeValidator;
import com.cowr.common.view.PageParam;
import com.cowr.common.view.Result;
import com.cowr.model.Sysuser;
import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService;
import com.cowr.ssjygl.productpricemodify.ProductPriceModifyService;
import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: product_price_modify
* Remarks:
* PrimaryKey: id
*/
public class ProductPriceModifyController extends Controller {
/**
* product_price_modify
*/
public void find(){
String name = get("name");
String stm = get("stm");
String etm = get("etm");
Integer supermarket_id = getInt("supermarket_id");
Integer state = getInt("state");
PageParam pp = getBean(PageParam.class, "", true);
renderJson(Result.object(ProductPriceModifyService.me.find(pp, name, stm, etm, supermarket_id, state)));
}
/**
* product_price_modify
*/
@Before({StartAndEndTimeValidator.class})
public void list(){
String name = get("name");
String stm = get("stm");
String etm = get("etm");
Integer supermarket_id = getInt("supermarket_id");
Integer state = getInt("state");
renderJson(Result.object(ProductPriceModifyService.me.list(name, stm, etm, supermarket_id, state)));
}
@Before(ProductPriceModifyVerifyValidator.class)
public void verify() {
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
if (tokenuser == null) {
renderJson(Result.noauth());
return;
}
String id = get("id");
Integer state = getInt("state", 0);
Integer type = getInt("type", 1);
String memo = get("memo");
renderJson(ProductPriceModifySyncService.me.verify(id, state, type, memo, tokenuser));
}
}

View File

@ -0,0 +1,318 @@
package com.cowr.service.ssjygl.productpricemodify;
import com.cowr.common.enums.Enums;
import com.cowr.common.view.Result;
import com.cowr.model.*;
import com.cowr.service.ssjygl.base.BaseSyncService;
import com.cowr.service.ssjygl.synctask.SyncTaskService;
import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService;
import com.cowr.ssjygl.modifylog.ModifyLogService;
import com.jfinal.kit.StrKit;
import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.IAtom;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Generated by COWR Tue Dec 07 16:33:49 CST 2021
* TableName: product_price_modify
* Remarks:
* PrimaryKey: id
*/
public class ProductPriceModifySyncService extends BaseSyncService {
private static final Log log = Log.getLog(ProductPriceModifySyncService.class);
public static final ProductPriceModifySyncService me = new ProductPriceModifySyncService();
public Result verify(String id, Integer state, Integer type, String memo, Sysuser user) {
if (!SysuserSyncService.me.isCompanyManager(user.getRole())) {
return Result.permissionDenied();
}
if (state != 2 && state != 9) {
return Result.failed("state 值错误");
}
if (type != 1 && type != 2) {
return Result.failed("type 值错误");
}
ProductPriceModify model = ProductPriceModify.dao.findById(id);
if (model == null) {
return Result.failed("没有找到价格变更申请记录");
}
if (model.getState() == state) {
return Result.failed("价格变更申请状态未变化");
}
if (type == 1) {
return verifyProductUnitPrice(model, state, memo, user);
}
return verifyCustomerUnitPrice(model, state, memo, user);
}
/**
*
* @param model
* @param state
* @param memo
* @param user
* @return
*/
public Result verifyProductUnitPrice(ProductPriceModify model, Integer state, String memo, Sysuser user) {
Integer supermarket_id = model.getSupermarketId();
Integer product_id = model.getProductId();
BigDecimal unit_price = model.getUnitPrice();
SupermarketProduct supermarketProduct = SupermarketProduct.dao.findByIds(supermarket_id, product_id);
if (supermarketProduct == null) {
return Result.failed("未找到商品单价信息");
}
String sql = "select t.* from ordercluster t \n" +
" where t.state < 5 \n" +
" and t.supermarket_id = ?\n" +
" and t.product_id = ?\n" +
" and t.customer_id not in (\n" +
" select a.customer_id from customer_supermarket_product a\n" +
" where a.customer_id = t.customer_id \n" +
" and a.supermarket_id = t.supermarket_id \n" +
" and a.product_id = t.product_id\n" +
" )";
List<Ordercluster> orderclusterList = Ordercluster.dao.find(sql, supermarket_id, product_id);
Map<Integer, SyncTask> map = new HashMap<>();
if (orderclusterList != null && !orderclusterList.isEmpty()) {
for (Ordercluster ordercluster : orderclusterList) {
ordercluster.setUnitPrice(unit_price);
if (!map.containsKey(ordercluster.getId())) {
map.put(ordercluster.getSupermarketId(), new SyncTask());
}
map.get(ordercluster.getSupermarketId()).addUpdateData(ordercluster);
}
}
try {
SyncTask synctask = new SyncTask();
ProductPriceModify oldmodel = model.clone();
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() throws SQLException {
Date now = new Date();
model.setState(state);
model.setVerifyTime(now);
boolean ret = model.update();
if (!ret) {
return false;
}
synctask.addUpdateData(model);
SupermarketProduct oldPriceModal = null;
SupermarketProduct priceModal = null;
if (state == 2) { // 审核通过
Stock stock = Stock.dao.findByIds(supermarket_id, product_id);
if (stock != null) {
stock.setStockWeight(new BigDecimal(0));
synctask.addUpdateData(stock);
ret = stock.update();
}
if (!ret) {
return false;
}
if (orderclusterList != null && !orderclusterList.isEmpty()) {
int[] editret = Db.batchUpdate(orderclusterList, orderclusterList.size());
for (int i : editret) {
// 必须是每条 sql 修改一条记录
if (i != 1) {
return false;
}
}
// 将单价同步到不同的砂站
for (Map.Entry<Integer, SyncTask> entry : map.entrySet()) {
if (!SyncTaskService.me.save(entry.getValue(), entry.getKey())) {
return false;
}
}
}
SupermarketProduct supermarketProduct = SupermarketProduct.dao.findByIds(supermarket_id, product_id);
oldPriceModal = supermarketProduct.clone();
supermarketProduct.setUnitPrice(unit_price);
ret = supermarketProduct.update();
synctask.addUpdateData(supermarketProduct);
priceModal = supermarketProduct.clone();
if (!ret) {
return false;
}
}
ProductPriceModifyLog his = new ProductPriceModifyLog();
his.setId(StrKit.getRandomUUID());
his.setProductPriceModifyId(model.getId());
his.setChangeUserId(user.getId());
his.setChangeUserName(user.getName());
his.setState(model.getState());
his.setChangeTime(now);
his.setMemo(memo);
ret = his.save();
if (!ret) {
return false;
}
synctask.addSaveData(his);
if (state == 2) {
return SyncTaskService.me.save(synctask, supermarket_id)
&& ModifyLogService.me.save(model, oldmodel, Enums.DataOpType.UPDATE.getId(), user)
&& ModifyLogService.me.save(priceModal, oldPriceModal, Enums.DataOpType.UPDATE.getId(), user);
}
return SyncTaskService.me.save(synctask, supermarket_id)
&& ModifyLogService.me.save(model, oldmodel, Enums.DataOpType.UPDATE.getId(), user);
}
});
if (ret) {
SyncTaskService.me.send(synctask);
}
return ret ? Result.success(true) : Result.failed(false, "审核失败");
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.failed(false, e.getMessage());
}
}
/**
*
* @param model
* @param state
* @param memo
* @param user
* @return
*/
public Result verifyCustomerUnitPrice(ProductPriceModify model, Integer state, String memo, Sysuser user) {
Integer customer_id = model.getCustomerId();
Integer supermarket_id = model.getSupermarketId();
Integer product_id = model.getProductId();
BigDecimal unit_price = model.getUnitPrice();
Customer customer = Customer.dao.findById(customer_id);
if (customer == null) {
return Result.failed("未找到有效的客户信息");
}
CustomerSupermarketProduct customerSupermarketProduct = CustomerSupermarketProduct.dao.findByIds(customer_id, supermarket_id, product_id);
if (customerSupermarketProduct == null) {
return Result.failed("未找到客户自定义单价信息");
}
try {
SyncTask synctask = new SyncTask();
ProductPriceModify oldmodel = model.clone();
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() throws SQLException {
Date now = new Date();
model.setState(state);
model.setVerifyTime(now);
boolean ret = model.update();
if (!ret) {
return false;
}
synctask.addUpdateData(model);
CustomerSupermarketProduct oldPriceModal = null;
CustomerSupermarketProduct priceModal = null;
if (state == 2) { // 审核通过
CustomerSupermarketProduct customerSupermarketProduct = CustomerSupermarketProduct.dao.findByIds(customer_id, supermarket_id, product_id);
oldPriceModal = customerSupermarketProduct.clone();
customerSupermarketProduct.setUnitPrice(unit_price);
ret = customerSupermarketProduct.update();
synctask.addUpdateData(customerSupermarketProduct);
priceModal = customerSupermarketProduct.clone();
if (!ret) {
return false;
}
}
ProductPriceModifyLog his = new ProductPriceModifyLog();
his.setId(StrKit.getRandomUUID());
his.setProductPriceModifyId(model.getId());
his.setChangeUserId(user.getId());
his.setChangeUserName(user.getName());
his.setState(model.getState());
his.setChangeTime(now);
his.setMemo(memo);
ret = his.save();
if (!ret) {
return false;
}
synctask.addSaveData(his);
if (state == 2) {
return SyncTaskService.me.save(synctask, supermarket_id)
&& ModifyLogService.me.save(model, oldmodel, Enums.DataOpType.UPDATE.getId(), user)
&& ModifyLogService.me.save(priceModal, oldPriceModal, Enums.DataOpType.UPDATE.getId(), user);
}
return SyncTaskService.me.save(synctask, supermarket_id)
&& ModifyLogService.me.save(model, oldmodel, Enums.DataOpType.UPDATE.getId(), user);
}
});
if (ret) {
SyncTaskService.me.send(synctask);
}
return ret ? Result.success(true) : Result.failed(false, "审核失败");
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.failed(false, e.getMessage());
}
}
}

View File

@ -0,0 +1,32 @@
package com.cowr.service.ssjygl.productpricemodify;
import com.cowr.common.validator.CrudParamValidator;
import com.cowr.common.view.Result;
import com.jfinal.core.Controller;
import java.util.ArrayList;
import java.util.List;
/**
* Generated by COWR Mon Feb 10 12:11:03 CST 2020
* TableName: prepay_detail
* PrimaryKey: id
*/
public class ProductPriceModifyVerifyValidator extends CrudParamValidator {
private static List<Integer> chkstate = new ArrayList<Integer>() {{
add(2);
add(9);
}};
@Override
protected void validate(Controller c) {
validateString("id", 32, 32, "id", "id 长度 32必填");
validateInIntegerArray("state", chkstate, "state", "state 可选值 2、9");
validateString("memo", 0, 255, "memo", "memo 长度 0~255");
}
protected void handleError(Controller c) {
c.renderJson(Result.failed(getErrmsg()));
}
}

View File

@ -7,14 +7,15 @@ import com.cowr.service.ssjygl.base.BaseSyncService;
import com.cowr.service.ssjygl.main.SvrCacheData;
import com.cowr.service.ssjygl.synctask.SyncTaskService;
import com.cowr.ssjygl.modifylog.ModifyLogService;
import com.jfinal.kit.StrKit;
import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.IAtom;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SupermarketSyncService extends BaseSyncService {
private static Log log = Log.getLog(SupermarketSyncService.class);
@ -152,8 +153,15 @@ public class SupermarketSyncService extends BaseSyncService {
return Result.object(ret);
}
public Result editUnitPrice(int supermarket_id, int product_id, Double unit_price, Sysuser sysuser) {
/**
*
* @param supermarket_id
* @param product_id
* @param unit_price
* @param user
* @return
*/
public Result editUnitPrice(int supermarket_id, int product_id, Double unit_price, Sysuser user) {
if (unit_price == null || unit_price <= 0) {
return Result.failed("商品单价不能小于0");
}
@ -163,66 +171,48 @@ public class SupermarketSyncService extends BaseSyncService {
return Result.failed("商品配置信息不存在");
}
SupermarketProduct saveold = sp.clone();
ProductPriceModify ppm = new ProductPriceModify();
ppm.setId(StrKit.getRandomUUID());
ppm.setSupermarketId(supermarket_id);
ppm.setProductId(product_id);
ppm.setUnitPrice(BigDecimal.valueOf(unit_price));
ppm.setType(1);
ppm.setState(1);
ppm.setCreateTime(new Date());
ppm.setChangeTime(new Date());
ppm.setCreateUserId(user.getId());
sp.setUnitPrice(BigDecimal.valueOf(unit_price));
String sql = "select t.* from ordercluster t \n" +
" where t.state < 5 \n" +
" and t.supermarket_id = ?\n" +
" and t.product_id = ?\n" +
" and t.customer_id not in (\n" +
" select a.customer_id from customer_supermarket_product a\n" +
" where a.customer_id = t.customer_id \n" +
" and a.supermarket_id = t.supermarket_id \n" +
" and a.product_id = t.product_id\n" +
" )";
List<Ordercluster> orderclusterList = Ordercluster.dao.find(sql, supermarket_id, product_id);
Map<Integer, SyncTask> map = new HashMap<>();
if (orderclusterList != null && !orderclusterList.isEmpty()) {
for (Ordercluster ordercluster : orderclusterList) {
ordercluster.setUnitPrice(BigDecimal.valueOf(unit_price));
if (!map.containsKey(ordercluster.getId())) {
map.put(ordercluster.getSupermarketId(), new SyncTask());
}
map.get(ordercluster.getSupermarketId()).addUpdateData(ordercluster);
}
}
SyncTask synctask = new SyncTask();
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() {
try {
boolean ret = true;
SyncTask synctask = new SyncTask();
synctask.addUpdateData(sp);
boolean ret = ppm.save();
Stock stock = Stock.dao.findByIds(supermarket_id, product_id);
if (stock != null) {
stock.setStockWeight(new BigDecimal(0));
synctask.addUpdateData(stock);
ret = stock.update();
if (!ret) {
return false;
}
if (orderclusterList != null && !orderclusterList.isEmpty()) {
int[] editret = Db.batchUpdate(orderclusterList, orderclusterList.size());
for (int i : editret) {
// 必须是每条 sql 修改一条记录
if (i != 1) {
return false;
}
}
// 将单价同步到不同的砂站
for (Map.Entry<Integer, SyncTask> entry : map.entrySet()) {
if (!SyncTaskService.me.save(entry.getValue(), entry.getKey())) {
return false;
}
}
ProductPriceModifyLog his = new ProductPriceModifyLog();
his.setId(StrKit.getRandomUUID());
his.setProductPriceModifyId(ppm.getId());
his.setChangeUserId(user.getId());
his.setChangeUserName(user.getName());
his.setState(ppm.getState());
his.setChangeTime(new Date());
ret = his.save();
if (!ret) {
return false;
}
return ret && sp.update()
&& SyncTaskService.me.save(synctask)
&& ModifyLogService.me.save(sp, saveold, Enums.DataOpType.UPDATE.getId(), sysuser);
synctask.addSaveData(ppm);
synctask.addSaveData(his);
return SyncTaskService.me.save(synctask, supermarket_id)
&& ModifyLogService.me.save(ppm, null, Enums.DataOpType.SAVE.getId(), user);
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
@ -230,6 +220,10 @@ public class SupermarketSyncService extends BaseSyncService {
}
});
return Result.object(ret);
if (ret) {
SyncTaskService.me.send(synctask);
}
return ret ? Result.object(ppm) : Result.failed(false, "修改失败");
}
}

View File

@ -148,6 +148,19 @@ public class SysuserSyncService extends BaseSyncService {
return roleid.equals(RoleEnum.FINANCEMANAGER.getRoleid());
}
/**
*
*
* @param roleid
* @return
*/
public boolean isCompanyManager(Integer roleid) {
if (roleid == null) return false;
return roleid.equals(RoleEnum.COMPANYMANAGER.getRoleid());
}
/**
/**
*
*
@ -250,6 +263,7 @@ public class SysuserSyncService extends BaseSyncService {
&& !isChaisha(model.getRole())
&& !isPresidentView(model.getRole())
&& !isFinanceManager(model.getRole())
&& !isCompanyManager(model.getRole())
) {
// 不是财务、经理、采砂局的时候,按照原来的规则检查
if (checkEntityId(model) == null) {
@ -780,6 +794,7 @@ public class SysuserSyncService extends BaseSyncService {
&& !isCustomer(sysuser.getRole())
&& !isChaisha(sysuser.getRole())
&& !isFinanceManager(sysuser.getRole())
&& !isCompanyManager(sysuser.getRole())
) {
return Result.permissionDenied();
}